IP Library Granted Patent US 12,293,193
Granted Patent B2
US 12,293,193 · App. 17/373,592 · Granted May 6, 2025

Advanced processor architecture

Inventor: Martin Vorbach (Lingenfeld, DE)
Assignee: Ubitium GmbH
G06F9/3856G06F9/3001G06F9/30065G06F9/30098G06F9/3017G06F9/325G06F9/327G06F9/382G06F9/3824G06F9/3826G06F9/3828G06F9/3836G06F9/384G06F9/3842G06F9/3844G06F9/3846G06F9/3848G06F9/3854G06F9/3858G06F9/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 12,293,193
App. No.
17/373,592
Granted
May 6, 2025
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 (54)

1. An out-of-order microprocessor having an out-of-order-mode, the out-of-order microprocessor executing instructions out of order in the out-of-order-mode, wherein, in the out-of-order-mode, some of the instructions have at least two source register references for referencing at least two source registers from which at least two operand data are received and one target register reference for referencing at least one result data register in which result data is stored, the out-of-order microprocessor comprising for the out-of-order-mode:

a unit adapted to fetch said instructions in a fetching order from an instruction memory; and

a unit adapted to issue the fetched instructions in the fetching order to a two-dimensional array of execution units,

the execution units being adapted to produce the result data for storing in result data registers by processing operand data received from result data registers storing previously produced result data,

the execution units beinginterconnectedin the two-dimensional array by a network that transmits processing results previously produced by execution units and stored in the result data registers as operand data to execution unit inputs,

each of the execution units receiving an issued instruction, waiting for the operand data required for the received instruction to arrive from the result data register storing previously produced result data, processing the operand data after arrival from the network, producing the result data according to the instruction received, and storing the produced result data in a result data register for transmitting the produced result data to the network; wherein

the result data is made available to receiving execution units, and after the result data has been made available to all receiving execution units requiring the result data as operand data, the respective execution unit that made the result data available becomes available for processing a new respective instruction issued from the unit adapted to issue the fetched instructions; and

the result data is determined to have been transmitted to all receiving execution units requiring the result data as operand data based on records of a register positioning table, wherein the records include identifications of registers that store results of instructions and identifications of execution units that include the registers.

2. The out-of-order microprocessor of claim 1 wherein the result data is determined to have been transmitted to all receiving execution units requiring the result data as operand data based on a further instruction being issued by the unit adapted to issue the fetched instructions, the further instruction using, as a result register, a register of the respective execution unit that stores the result data.

3. A data processing chip comprising:

a plurality of execution units that (I) each has a unique identifier, (II) each has at least one respective result register, and (III) are arranged in a multi-dimensional array that includes interconnections that interconnect the plurality execution units;

an instruction fetcher, wherein the instruction fetcher is adapted to fetch said instructions in a fetching order from an instruction memory;

an instruction issuer;

wherein:

the data processing chip is adapted to operate in an out-of-order processing mode in which the instruction issuer issues, selectively to available execution units of the plurality of execution units, the available execution units being a subset of the plurality of execution units that have been verified to have a status of being available, issuer instructions:

(I) based on the fetched instructions that had been fetched from the instruction memory;

(II) in the fetching order; and

(III) one or more of which each, using a respective one or more of the unique identifiers, identifies from which one or more of the plurality of execution units output data is to be received (i) via the interconnections and (ii) as operand data for execution of the issuer instruction, the output data to be received having been previously generated by the one or more of the plurality of execution units by execution of one or more of the issuer instructions that had been issued earlier in the fetching order to the one or more of the plurality of execution units;

each of at least some of the plurality of execution units is adapted to perform the following after receiving a respective one of the one or more of the issuer instructions having the identification:

wait for the operand data of the respective one of the issuer instructions to be received via the interconnections from the one or more of the plurality of execution units identified by the respective one or more of the unique identifiers of the respective issuer instruction;

process the operand data of the respective one of the issuer instructions once the operand data of the respective one of the issuer instructions has been received via the interconnections, thereby producing further output data; and

store the produced further output data in the at least one respective result register of the respective one of the execution units, the further output data being transmittable from the at least one respective result register as operand data to other ones of the plurality of execution units for subsequent execution of other ones of the issuer instructions.

4. The data processing chip of claim 3 , wherein, for the each of the at least some of the plurality of execution units, after the further output data produced by the respective execution unit has been stored in the at least one respective result register of the respective execution unit, status of the respective execution unit is changed from unavailable to available in response to the further output data of the respective execution unit having been transmitted to all other ones of the plurality of execution units that require the further output data of the respective execution unit as operand data.

5. The data processing chip of claim 3 , wherein, for the each of the at least some of the plurality of execution units, after the further output data produced by the respective execution unit has been stored in the at least one respective result register of the respective execution unit, the instruction issuer is adapted to respond to the further output data of the respective execution unit having been transmitted to all other ones of the plurality of execution units that require the further output data of the respective execution unit as operand data by issuing a further instruction that (I) changes the status of the respective execution unit from unavailable to available and (II) uses the at least one respective result register of the respective execution unit in which the produced further output data had been stored by the respective execution unit.

6. The data processing chip of claim 3 , wherein the interconnections are formed by a bus system that includes a plurality of transmission paths that are shared and selectively accessible by the plurality of execution units.

7. The data processing chip of claim 3 , wherein the each of the one or more of the issued instructions further identifies a specific one of the at least one respective result register of the identified one or more of the plurality of execution units from which the operand data for the respective issued instruction is to be obtained.

8. The data processing chip of claim 3 , further comprising:

a register positioning table that includes records with respective references to specific ones of the result registers storing specific ones of the output data, wherein the instruction issuer looks up the records in order to determine the identifiers to include in the issued instructions.

9. The data processing chip of claim 3 , wherein the instruction issuer includes a trash unit that is configured to respond to, in response to a detection of a mis-predicted jump to an issued instruction being executed by one of the plurality of execution units, issue a trash signal that immediately aborts the respective issued instruction and changes the status of the executing one of the execution units to available.

10. The data processing chip of claim 3 , further comprising an instruction analyzer, wherein the instruction analyzer is configured to compare groups of original instructions to predefined patterns, in response to a match for one of the groups of original instructions being determined by the comparison, replacing the respective group of original instructions with a consolidated instruction and sending the consolidated instruction to the instruction issuer for generating one of the issued instructions issued to one of the execution units.

11. A microprocessor, the microprocessor being adapted to operate on instructions and having:

execution units arranged in an array for processing operand data and producing result data according to instructions issued and being adapted to use registers as source registers for storing operand data and target registers for storing result data;

a network for the interconnection of the execution units;

units adapted to fetch said instructions on which the microprocessor operates and to issue the instructions in a fetching order respectively;

units adapted to fetch said instructions on which the microprocessor operates and to issue the instructions in a fetching order respectively; and

a register positioning table adapted to reference as references to target registers for storing result data to the execution units producing the result data;

wherein the unit for issuing the instructions in the fetching order is adapted to:

lookup operand sources in the register positioning table for enabling the execution units to obtain the operands via the network by setting operand input references of the instruction to be issued in view of the looked up reference sources;

issue the instructions to an available execution unit; and

enter a reference to the target register for storing the result data the execution unit receiving the instruction is to produce into the register positioning table.

12. The microprocessor of claim 11 , wherein result data is transmitted over the network from the target register of a producing execution unit to at least one source register of at least one receiving execution unit.

13. The microprocessor of claim 12 , wherein in a releasing processing mode, after the result data of the producing execution unit has been transmitted to all receiving execution units requiring the result data as operand data, the producing execution unit becomes available for receiving a new instruction from the unit adapted to issue instructions in a fetching order.

14. The microprocessor of claim 12 , wherein in a semi-static processing mode, after the result data of the producing execution unit has been transmitted to all receiving execution units requiring the result data as operand data, the producing execution unit continues processing on the same instruction newly received operand data to produce new result data.

15. The microprocessor of claim 14 , wherein:

both, a releasing processing mode and the semi-static processing mode are used, the releasing processing mode for processing algorithms out-of-order and the semi-static processing mode for accelerating loops; and

in the releasing processing mode, after the result data of the producing execution unit has been transmitted to all receiving execution units requiring the result data as operand data, the producing execution unit becomes available for receiving a new instruction from the unit adapted to issue instructions in a fetching order.

16. The microprocessor of claim 15 , wherein the processor switches between the releasing and semi-static processing modes within at least one clock cycle.

17. The microprocessor of claim 12 , wherein in a releasing processing mode, the source register input is set by the unit for issuing the instructions to receive result data over the network from the execution unit producing the result.

18. The microprocessor of claim 12 , wherein in a semi-static processing mode, the network is set up to interconnect the execution units for transmitting data accordingly to the register access pattern of the issued instructions.

19. The microprocessor of claim 17 , wherein:

the releasing processing mode is used for processing algorithms out-of-order; and

in a semi-static processing mode, which is used for accelerating loops, the network is set up to interconnect the execution units for transmitting data accordingly to the register access pattern of the issued instructions.

20. The microprocessor of claim 19 , wherein the processor switches between the releasing and semi-static processing modes within at least one clock cycle.

21. The microprocessor of claim 11 , wherein the fetched instructions are, before being issued by the unit for issuing the instructions, amended with operand input references, retrieved from the register positioning table, to the operand sources in the array.

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 Aug 9, 2021
From: VORBACH, MARTIN
To: HYPERION CORE, INC.
Reel/Frame 057125/0529 →
Priority Claims (2)
EP 14197929 · Dec 15, 2014 · regional
EP 15020103 · Jun 24, 2015 · regional
Continuity (2)
Continuation 15535697
Related Publication 20210406027A1 · Dec 30, 2021
References Cited (40)
US 5699537A · Sharangpani et al. · 1997 [cited by applicant]
US 5923862A · Nguyen et al. · 1999 [cited by applicant]
US 6560629B1 · Harris · 2003 [cited by examiner]
US 7096345B1 · Chen et al. · 2006 [cited by applicant]
US 7111152B1 · Cofler et al. · 2006 [cited by applicant]
US 7958336B2 · Lahav · 2011 [cited by examiner]
US 20060101232A1 · Takada · 2006 [cited by examiner]
US 20090216993A1 · Venkumahanti · 2009 [cited by examiner]
US 20100122071A1 · Yoshikawa · 2010 [cited by examiner]
US 20140201509A1 · Jackson · 2014 [cited by examiner]
EP 141857458 · 2014 [cited by applicant]
WO 2002071249 · 2002 [cited by applicant]
WO 2010142432 · 2010 [cited by applicant]
WO 2010043401 · 2010 [cited by applicant]
WO 2011079942 · 2011 [cited by applicant]
WO 2012003997 · 2012 [cited by applicant]
WO 2012123061 · 2012 [cited by applicant]
WO 2012167933 · 2012 [cited by applicant]
WO 2013098643 · 2013 [cited by applicant]
“ARM7TDMI-S Data Sheet”, Document No. ARM DDI 0084D, ARM Ltd., UK, 1998, 60 pages. [cited by applicant]
“Computer Organization and Architecture, Chapter 15. Control Unit Operation”, umcs.maine.edu, http://aturing.umcs.maine.edu/˜meadow/courses/cos335/COA15.pdf,, Mar. 16, 2010, 9 pages. [cited by applicant]
Balasubramonian, “Lecutre Notes: Out-of-Order Processors”, University of Utah, Oct. 13, 2007, 8 pages. [cited by applicant]
WIPO, International Search Report for International Patent Application No. PCT/US2015/065418, Jul. 7, 2016, 6 pages. [cited by applicant]
WIPO, Written Opinion for International Patent Application No. PCT/US2015/065418, Jul. 7, 2016, 8 pages. [cited by applicant]
Fog, “The microarchitecture of Intel, AMD and VIA CPUs: An optimization guide for assembly programmers and compiler makers”, http://www.agner.org/optimize/microarchitecture.pdf, 1996-2017, 233 pages. [cited by applicant]
Goulding-Hotta, et al., “The GreenDroid Mobile Application Processor: an Architecture for Silicon's Dark Future”, University California, San Diego; Published by the IEEE Computer Society, Mar./Apr. 2011, 10 pages. [cited by applicant]
Gunadi, et al., “CRIB: Consolidated Rename, Issue, and Bypass”, ISCA'11, Jun. 4-8, 2011, San Jose, California, USA, 2011, 10 pages. [cited by applicant]
WIPO, International Preliminary Report for Patentability for International Patent Application No. PCT/US2015/065418, Jun. 20, 2017, 9 pages. [cited by applicant]
Jeong, et al., “In-Order Issue Out-of-Order Execution Floating-Point Coprocessor for CalmRISC32”, Proceedings of the 15th IEEE Symposium on Computer Arithmetic, 2001, pp. 195-200. [cited by applicant]
Lazzaro, “CS 152 Computer Architecture and Engineering: Lecture 6—Superpipelining + Branch Pre-diction”, UC Berkeley, https://inst.eecs.berkeley.edu/˜cs152/sp14/lecnotes/lec3-2.pdf, Feb. 6, 2014, 37 pages. [cited by applicant]
Rotenberg, et al., “Trace Cache: a Low Latency Approach to High Bandwidth Instruction Fetching”, Proceedings of the 29th annual ACM/IEEE international symposium on Microarchitecture. IEEE Computer Society, Dec. 2-4, 199… [cited by applicant]
Sima, “Microarchitecture of Superscalars (3): Branch Prediction”, Universitas Budensis , John von Neumann Faculty of Informatics, Fall 2007, 73 pages. [cited by applicant]
Thomadakis, “The Architecture of the Nehalem Processor and Nehalem-EP SMP Platforms”, Texas A&M University, Mar. 17, 2011, 49 pages. [cited by applicant]
Tomasulo, “An Efficient Algorithm for Exploiting Multiple Arithmetic Units”, IBM Journal of Research and Development archive; vol. 11, Issue 1, Jan. 1967, pp. 25-33. [cited by applicant]
UK Intellectual Property Office, Examination Report for United Kingdom Patent Application No. 1711202.0, Aug. 17, 2017, 10 pages. [cited by applicant]
UK Intellectual Property Office, Examination Report for United Kingdom Patent Application No. 1711202.0, Aug. 20, 2018, 5 pages. [cited by applicant]
USPTO, Non-final Office Action for U.S. Appl. No. 15/535,697, filed Jan. 11, 2019, 7 pages. [cited by applicant]
USPTO, Notice of Allowance for U.S. Appl. No. 15/535,697, filed Jan. 8, 2021, 8 pages. [cited by applicant]
USPTO, Non-final Office Action for U.S. Appl. No. 15/535,697, filed May 13, 2020, 8 pages. [cited by applicant]
USPTO, Final Office Action for U.S. Appl. No. 15/535,697, filed Sep. 12, 2019, 9 pages. [cited by applicant]