IP Library Granted Patent US 8,195,921
Granted Patent B2
US 8,195,921 · App. 12/170,144 · Granted Jun 5, 2012

Method and apparatus for decoding multithreaded instructions of a microprocessor

Assignee: Oracle America, Inc.
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 8,195,921
App. No.
12/170,144
Granted
Jun 5, 2012
Kind
B2
Abstract

A microprocessor capable of decoding a plurality of instructions associated with a plurality of threads is disclosed. The microprocessor may comprise a first array comprising a first plurality of microcode operations associated with an instruction from within the plurality of instructions, the first array capable of delivering a first predetermined number of microcode operations from the first plurality of microcode operations. The microprocessor may further comprise a second array comprising a second plurality of microcode operations, the second array capable of providing one or more of the second plurality of microcode operations in the event that the instruction decodes into more than the first predetermined number of microcode operations. The microprocessor may further comprise an arbiter coupled between the first and second arrays, where the arbiter may determine which thread from the plurality of threads accesses the second array.

Claims (33)

1. A microprocessor capable of decoding a plurality of instructions associated with a plurality of threads, comprising:

a first array comprising a first plurality of microcode operations associated with an instruction from the plurality of instructions, the first array capable of delivering a first predetermined number of microcode operations from the first plurality of microcode operations;

a second array comprising a second plurality of microcode operations, the second array capable of providing one or more of the second plurality of microcode operations in the event that the instruction decodes into more than the first predetermined number of microcode operations and

an arbiter coupled between the first and second arrays, wherein the arbiter determines which thread from the plurality of threads accesses the second array;

wherein the first array provides an address within the second array in the event that the instruction decodes into more than the first predetermined number of microcode operations

wherein the second array provides a second predetermined number of microcode operations, and in the event that the instruction decodes into more than the second predetermined number of microcode operations, then the second array provides a subsequent address within the second array to the arbiter.

2. The microprocessor of claim 1 , wherein the arbiter is coupled to a first and a second address registers located between the first and second arrays, wherein the first address register stores an address from the second array and the second address register stores an address from the first array.

3. The microprocessor of claim 1 , wherein the second array provides the second predetermined number of microcode operations in a first cycle of the microprocessor, and wherein the second array provides no further microcode operations in a second cycle of the microprocessor, wherein the first and second cycles of the microprocessor are sequential.

4. The microprocessor of claim 2 , wherein the second array provides microcode operations for the instruction based on the addresses generated by both the first and second arrays, and wherein the second array provides an average of at least one microcode operation between successive cycles of the microprocessor.

5. The microprocessor of claim 1 , wherein the first array is coupled to a second arbiter and the second arbiter selects a different thread for execution than the arbiter coupled between the first and second arrays.

6. A computer system comprising:

a user input device;

a microprocessor coupled to the user input device, the microprocessor capable of decoding a plurality of instructions associated with a plurality of threads, the microprocessor comprising:

a first array comprising a first plurality of microcode operations associated with an instruction from the plurality of instructions, the first array capable of delivering a first predetermined number of microcode operations from the first plurality of microcode operations;

a second array comprising a second plurality of microcode operations, the second array capable of providing one or more of the second plurality of microcode operations in the event that the instruction decodes into more than the first predetermined number of microcode operations; and

an arbiter coupled between the first and second arrays, wherein the arbiter determines which thread from the plurality of threads accesses the second array;

wherein the first array provides an address within the second array in the event that the instruction decodes into more than the first predetermined number of microcode operations;

wherein the second array provides a second predetermined number of microcode operations, and in the event that the instruction decodes into more than the second predetermined number of microcode operations, then the second array provides a subsequent address within the second array to the arbiter.

7. The computer system of claim 6 , wherein the arbiter is coupled to a first and a second address registers located between the first and second arrays, wherein the first address register stores an address from the second array and the second address register stores an address from the first array.

8. The computer system of claim 6 , wherein the second array provides the second predetermined number of microcode operations in a first cycle of the microprocessor, and wherein the second array provides no further microcode operations in a second cycle of the microprocessor, wherein the first and second cycles of the microprocessor are sequential.

9. The computer system of claim 7 , wherein the second array provides microcode operations for the instruction based on the addresses generated by both the first and second arrays, and wherein the second array provides an average of at least one microcode operation between successive cycles of the microprocessor.

10. The computer system of claim 6 , wherein the first array is a programmable logic array and the second array is a memory array.

11. A method of decoding a plurality of instructions associated with a plurality of threads, the method comprising the acts of:

determining the complexity of at least one instruction within the plurality of instructions;

delivering a first predetermined number of microcode operations from a first array;

in the event that the instruction is complex, delivering a first address from the first array, the first address corresponding to the location of one or more additional microcode operations within a second array;

providing a second address from the second array, the second address corresponding to the location of one or more additional microcode operations within the second array;

arbitrating for access to the second array between using the first and second address; and

providing the first address in the event that the instruction decodes into more than the first predetermined number of microcode operations;

providing a second predetermined number of microcode operations from the second array, and in the event that the instruction decodes into more than the second predetermined number of operations, then further comprising the act of providing the second address to an arbiter.

12. The method of claim 11 , further comprising the act of providing the second predetermined number of microcode operations in a first cycle of a microprocessor.

13. The method of claim 12 , further comprising the act of providing no further microcode operations in a second cycle of the microprocessor, wherein the first and second cycles of the microprocessor are sequential.

14. The method of claim 12 , further comprising the act of providing microcode operations for the instruction from within the second array based upon both the first and second addresses, and further comprising the act of providing an average of at least one microcode operation between successive cycles of the microprocessor.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037311/0171 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2008
From: GOLLA, ROBERT; SHAH, MANISH
To: SUN MICROSYSTEMS, INC.
Reel/Frame 021214/0863 →
Continuity (1)
Related Publication 20100011190A1 · Jan 14, 2010