IP Library Granted Patent US 9,182,992
Granted Patent B2
US 9,182,992 · App. 13/914,323 · Granted Nov 10, 2015

Method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers

Inventor: Miguel A Guerrero (San Jose, CA)
Assignee: ESENCIA TECHNOLOGIES INC
G06F9/3867G06F9/3012G06F9/30138G06F9/3826G06F9/3891
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 9,182,992
App. No.
13/914,323
Granted
Nov 10, 2015
Kind
B2
Abstract

A method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers allows for either decreased register spillage or decreased area and power consumption of a microprocessor. The microprocessor takes advantage of register bypass logic to write short-lived values to virtual registers, which are discarded instead of being written to the register bank, thus reducing register pressure by avoiding short-lived values being written to the register bank.

Claims (59)

1. A method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers, the method comprises the steps of:

providing a microprocessor, wherein a periodic clock cycle coordinates commands executed by the microprocessor;

providing a register bank, wherein the register bank comprises a number of physical registers (R);

providing a specific pipeline datapath and a plurality of optional additional pipeline datapaths within the microprocessor,

wherein N is the total number of pipeline datapaths;

wherein the specific pipeline datapath and the plurality of optional additional pipeline datapaths each comprise a plurality of pipeline stages;

wherein the plurality of pipeline stages includes an execution stage and a writeback stage;

wherein the execution stage occurs before the writeback stage;

wherein the specific pipeline datapath and the plurality of optional additional pipeline datapaths each comprise a number of pipeline registers (P) between the execution stage and the writeback stage;

processing a source instruction with the specific pipeline datapath;

processing a corresponding instruction with an arbitrary pipeline datapath, wherein the arbitrary pipeline datapath is either the specific pipeline datapath or one of the plurality of optional additional pipeline datapaths;

sequentially executing the plurality of pipeline stages for both the specific pipeline datapath and the plurality of optional additional pipeline datapaths;

producing an output value with the specific pipeline datapath;

storing the output value within the register bank, if the output value is not used as an input value for the corresponding instruction within P clock cycles;

storing the output value within the register bank,

if the output value is used as an input value for the corresponding instruction within P clock cycles; and

if the output value is used as a subsequent input value for a future arbitrary subsequent instruction,

wherein the future arbitrary subsequent instruction uses the output value as a subsequent input value after P clock cycles;

storing the output value within a Pipeline Virtual Register (PVR),

if the output value is used as an input value for the corresponding instruction within P clock cycles, and

if the output value is not used as an input value for any subsequent instructions.

2. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , the method comprises the steps of:

providing register bypass logic, wherein the register bypass logic is able to access the specific pipeline datapath and the plurality of optional additional pipeline datapaths;

analyzing the input value with the register bypass logic to determine whether the input value was produced P or fewer clock cycles prior to the execution stage of the arbitrary pipeline datapath;

retrieving the input value from the register bank, if the input value was not produced P or fewer clock cycles prior to the execution stage of the arbitrary pipeline datapath; and

retrieving the input value from the specific pipeline datapath, if the input value was produced P or fewer clock cycles prior to the execution stage of the plurality of optional additional pipeline datapaths.

3. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , wherein the corresponding instruction is initialized at least one clock cycle after the source instruction is initialized by the microprocessor.

4. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , wherein the output value is killed after the corresponding instruction.

5. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , wherein each of the R physical registers has a register index value less than or equal to R.

6. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 5 , wherein the output value is assigned a register index value greater than R.

7. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , wherein the output value is produced by the execution stage of the specific pipeline datapath.

8. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , wherein P−1 is the number of pipeline stages between the execution stage and the writeback stage.

9. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , wherein the output value is discarded during the writeback stage of the specific pipeline datapath.

10. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , wherein the microprocessor is a configurable microprocessor with vector capabilities.

11. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , the method comprises the steps of:

providing a total number of accessible registers (A), wherein A is initially equal to R; and

increasing A from R to the sum of R and P*N in order to minimize spilling of live values from the register bank onto local memory by using P*N PVRs,

wherein short lived values are written to the P*N PVRs;

wherein the short lived values written to the P*N PVRs are discarded during the writeback stage.

12. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , the method comprises the steps of:

providing a total number of accessible registers (A), wherein A is initially equal to R;

decreasing R to a smaller number of physical registers (S), wherein A is similarly decreased from R to S; and

increasing A from S to the sum of S and P*N in order to reduce physical area, write-back dynamic power consumption and power leakage of the microprocessor,

wherein short lived values are written to an additional P*N PVRs;

wherein the short lived values written to the additional P*N PVRs are discarded during the writeback stage.

13. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , wherein the microprocessor implements register bypass logic to allocate short-lived values to a plurality of PVRs.

14. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , the method comprises the steps of:

providing a plurality of PVRs, wherein the plurality of PVRs contains live values;

copying the live values from the plurality of PVRs to memory, if an asynchronous exception is encountered by the microprocessor;

executing an exception handling routine to correct the asynchronous exception, if the asynchronous exception is encountered by the microprocessor; and

restoring the live values from memory to the plurality of PVRs after the microprocessor executes the exception handling routine.

15. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 , wherein a compiler allocates the PVR for a short lived value only in regions of code where the compiler can ensure that no exceptions will be encountered by the microprocessor.

16. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 15 , wherein no instructions in the specific regions of code can generate a synchronous exception and either the microprocessor is not configured to support exceptions or exceptions are disabled.

17. The method for improving performance of a pipelined microprocessor by utilizing pipeline virtual registers as claimed in claim 1 ,

providing a register bypass network, wherein the register bypass network comprises a plurality of PVRs;

providing a first register cluster and a second register cluster,

wherein the first register cluster and the second register cluster cannot directly communicate with each other;

transferring a live value from the first register cluster to an arbitrary PVR from the plurality of PVRs; and

transferring the live value from the arbitrary PVR to the second register cluster.

Assignments (4)
CHANGE OF NAME Recorded May 19, 2022
From: FACEBOOK TECHNOLOGIES, LLC
To: META PLATFORMS TECHNOLOGIES, LLC
Reel/Frame 060130/0404 →
CHANGE OF NAME Recorded Aug 13, 2020
From: OCULUS VR, LLC
To: FACEBOOK TECHNOLOGIES, LLC
Reel/Frame 053493/0139 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2018
From: ESENCIA TECHNOLOGIES INC.
To: OCULUS VR, LLC
Reel/Frame 046086/0663 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2013
From: GUERRERO, MIGUEL A
To: ESENCIA TECHNOLOGIES INC.
Reel/Frame 030581/0463 →
Continuity (2)
Provisional Application 61657514 · Jun 8, 2012
Related Publication 20130332704A1 · Dec 12, 2013