IP Library Granted Patent US 11,061,682
Granted Patent B2
US 11,061,682 · App. 15/535,697 · Granted Jul 13, 2021

Advanced processor architecture

Inventor: Martin Vorbach (Lingenfeld, DE)
G06F9/3855G06F9/3001G06F9/3017G06F9/30065G06F9/30098G06F9/325G06F9/327G06F9/382G06F9/384G06F9/3824G06F9/3826G06F9/3828G06F9/3836G06F9/3842G06F9/3844G06F9/3846G06F9/3848G06F9/3857G06F9/3861G06F9/3863G06F9/3885
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 11,061,682
App. No.
15/535,697
Granted
Jul 13, 2021
Kind
B2
Abstract

The invention relates to a method for processing instructions out-of-order on a processor comprising an arrangement of execution units. The inventive method comprises looking up operand sources in a Register Positioning Table and setting operand input references of the instruction to be issued accordingly, checking for an Execution Unit (EXU) available for receiving a new instruction, and issuing the instruction to the available Execution Unit and entering a reference of the result register addressed by the instruction to be issued to the Execution Unit into the Register Positioning Table (RPT).

Claims (43)

1. A method for processing instructions out-of-order on a processor comprising an arrangement of a plurality of execution units, the method comprising:

for each instruction of a plurality of instructions to be issued:

looking up respective operand sources in a Register Positioning Table and setting respective operand input references of the instruction;

checking for a respective execution unit of the plurality of execution units to be available for receiving a new instruction, wherein each respective execution unit of the plurality of execution units includes a respective instruction register, a respective plurality of operand registers, and a respective dedicated result register dedicated to the respective execution unit, wherein the respective plurality of operand registers and the respective dedicated result register of each respective execution unit are connected to a network interconnecting the plurality of execution units;

in response to determining that the respective execution unit is available, issuing the instruction from an instruction issue unit to the respective execution unit;

entering a respective reference to the respective execution unit of a respective result register addressed by the instruction into the Register Positioning Table; and

executing the instruction using the respective execution unit,

wherein each of the plurality of instructions is issued by the instruction issue unit to the respective instruction register of the respective execution unit of the plurality of execution units, causing a plurality of the instruction registers to receive the issued instructions,

wherein the plurality of instructions have a particular order, wherein issuing the plurality of instructions to the respective execution units is performed in the particular order, and wherein executing the plurality of instructions by the respective execution units is performed out of the particular order.

2. The method of claim 1 further comprising:

in response to determining that none of the plurality of execution units is available, repeating the checking until the respective execution unit becomes available.

3. The method of claim 1 further comprising:

determining a particular execution unit of the plurality of execution units holding a value of the respective result register addressed by the instruction; and

sending a retirement signal to the particular execution unit.

4. The method of claim 1 wherein the particular order is based on addressing the plurality of instructions by a program pointer.

5. The method of claim 1 wherein the respective execution unit is available based on at least one of: being unused or having completed a previously-executed instruction.

6. The method of claim 1 wherein each execution unit of the plurality of execution units is separately addressable by the instruction issue unit.

7. The method of claim 1 wherein the respective execution unit receives operand data from result output of one or more other execution units of the plurality of execution units via the network.

8. The method of claim 1 further comprising storing result data from the executing in a result output register of the respective execution unit and excluding storing the result data in a separate register file.

9. The method of claim 8 wherein operands used by the respective execution unit are stored in one or more result output registers of one or more of the plurality of execution units and not in a separate register file.

10. A method for processing instructions out-of-order on a processor comprising an arrangement of a plurality of execution units, the method comprising:

for each particular instruction of a plurality of instructions to be issued:

looking up operand sources in a Register Positioning Table and setting operand input references of the particular instruction to be issued;

checking for a respective execution unit of the plurality of execution units to be available for receiving a new instruction, wherein checking for the respective execution unit of the plurality of execution units to be available includes checking whether a respective result output register of the respective execution unit is available, wherein each respective execution unit of the plurality of execution units includes a respective instruction register, a respective plurality of operand registers, and a respective dedicated result register dedicated to the respective execution unit, wherein the respective plurality of operand registers and the respective dedicated result register are connected to a network interconnecting the plurality of execution units; and

in response to determining that the respective execution unit is available and the respective result output register of the respective execution unit is available, issuing the particular instruction from an instruction issue unit to the respective execution unit;

executing the particular instruction using the respective execution unit;

storing respective result data from the executing in the respective result output register of the respective execution unit; and

entering a respective reference of a respective result register addressed by the particular instruction into the Register Positioning Table,

wherein each of the plurality of instructions is issued by the instruction issue unit to the respective instruction register of the respective execution unit of the plurality of execution units, causing a plurality of the instruction registers to receive the issued instructions,

wherein the plurality of instructions have a particular order, wherein issuing the plurality of instructions to the plurality of execution units is performed in the particular order, and wherein executing the plurality of instructions by the respective execution units is performed out of the particular order.

11. The method of claim 10 wherein operands used by the respective execution unit are stored in one or more result output registers of one or more of the plurality of execution units and not in a separate register file.

12. The method of claim 10 further comprising:

in response to determining that none of the plurality of execution units is available, repeating the checking until one of the execution units becomes available.

13. The method of claim 10 further comprising:

determining a particular execution unit of the plurality of execution units holding a value of the respective result register addressed by the particular instruction to be issued; and

sending a retirement signal to the particular execution unit.

14. The method of claim 10 wherein the respective execution unit is available based on at least one of: being unused or having completed a previously-executed instruction.

15. The method of claim 10 wherein each execution unit of the plurality of execution units is separately addressable by the instruction issue unit.

16. The method of claim 10 wherein the respective execution unit receives operand data from result output of one or more other execution units of the plurality of execution units via a network.

17. The method of claim 1 wherein each execution unit of the plurality of execution units includes only one or more of: an arithmetic logic unit (ALU) block, a floating point unit, a multiplier, or a square root unit.

18. The method of claim 10 wherein the respective result output register of the respective execution unit is determined to be available when the data stored in the respective result output register has been transferred to all instructions and execution units referencing data stored in the respective result output register.

19. The method of claim 1 wherein the particular order is defined by a sequence produced by a program pointer that addresses the plurality of instructions in the particular order.

20. The method of claim 1 wherein the particular order is an arrangement of the plurality of instructions that indicates placement of the plurality of instructions into the plurality of execution units, wherein the arrangement is defined by code.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2024
From: HYPERION CORE INC.
To: UBITIUM GMBH
Reel/Frame 068200/0301 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 8, 2021
From: VORBACH, MARTIN
To: HYPERION CORE, INC.
Reel/Frame 056471/0442 →
Priority Claims (2)
EP 14197929 · Dec 15, 2014 · regional
EP 150201036 · Jun 24, 2015 · regional
Continuity (1)
Related Publication 20180004530A1 · Jan 4, 2018
Cited By (2)
US 12,210,402 US 12,449,987