Systems and methods for register allocation

US9690584B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9690584-B2
Application numberUS-201414484522-A
CountryUS
Kind codeB2
Filing dateSep 12, 2014
Priority dateOct 18, 2013
Publication dateJun 27, 2017
Grant dateJun 27, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

System and methods are provided for register allocation. An original code block and a target code block associated with a branch of an execution loop are determined. An original allocation of a plurality of physical registers to one or more original variables associated with the original code block is detected. A target allocation of the plurality of physical registers to one or more target variables associated with the target code block is determined. One or more temporary registers are selected from the plurality of physical registers based at least in part on the original allocation and the target allocation. The original allocation is changed to the target allocation using the selected temporary registers. Specifically, one or more instructions are generated to change the original allocation to the target allocation using the selected temporary registers. The instructions are executed using one or more processors.

First claim

Opening claim text (preview).

What is claimed is: 1. A method for register allocation, the method comprising: determining an original code block and a target code block associated with a branch of an execution loop, for execution by a processor device that comprises one or more processors and that includes physical processor registers including a first register and a second register; detecting an original allocation of the registers to variables associated with the original code block, which has been executed by the processor device; determining a target allocation of the registers to variables associated with the target code block, which is to be executed by the processor device; selecting a register, from among the processor registers, to be a temporary register, based at least in part on the register conforming to at least one of (i) the register not being allocated to a variable in the original allocation and (ii) the register not being allocated to a variable in the target allocation, wherein the selection of a register to be the temporary register includes: maintaining a first data structure having one bit for each register; setting each first data structure having one bit to a first state in response to the corresponding register being allocated in the target allocation to a variable that is allocated to a different register in the original allocation, and otherwise setting the first data structure to a second state; maintaining a second data structure having one bit for each register; setting each second data structure bit to the first state in response to the corresponding register being allocated in the original allocation to a variable that is allocated to a different register in the target allocation, and otherwise setting the second data structure bit to the second state; maintaining a third data structure having one bit for each register; determining each third data structure bit as a Boolean logic function of the corresponding first data structure bit and the corresponding second data structure bit; wherein the selection of a register to be a temporary register is based on the state of the corresponding third data structure bit; changing, by the processor device, from the original allocation to the target allocation using a process that includes: in response to determining that a first variable is allocated to the first register in the original allocation and to the second register in the target allocation, and that the second register is storing a value of a second variable, moving the value of the first variable from the first register to the temporary register, moving the value of the second variable from the second register to free up the second register, and moving the value of the first variable from the temporary register to the second register, such that the first variable is not used as an execution operand while being temporarily stored in the temporary register; and executing the target code block. 2. The method of claim 1 , wherein: the branch of the execution loop corresponds to a backward loop branch from the original code block to the target code block; and the execution loop further includes a forward loop branch from the target code block to the original code block. 3. The method of claim 1 , wherein the selecting the register includes: in response to determining that the selected register is allocated to a third variable in the original allocation and not allocated in the target allocation, freeing up the selected register by moving a value of the third variable from the selected register to a storage medium. 4. The method of claim 1 , wherein the moving of the second variable from the second register includes moving the second variable from the second register to a third register in response to determining that the third register is allocated to the second variable in the target allocation. 5. The method of claim 1 , further comprising: in response to determining that a fourth variable is not allocated in the original allocation and is allocated to a fourth register, from among the registers, in the target allocation, and that the fourth register is not currently allocated to a variable, loading a value of the fourth variable from a storage medium to the fourth register. 6. The method of claim 1 , wherein the first state is “1” and the second state is “0”, and the Boolean logic function includes ANDing the corresponding third data structure bit with an inverse of the corresponding second data structure bit, and the selection of a register to be a temporary register is based on the corresponding tempBitVector third data structure bit being a “1”. 7. A method for register allocation, the method comprising: determining an original code block and a target code block associated with a branch of an execution loop, for execution by a processor device that comprises one or more processors and that includes physical processor registers including a first register and a second register; detecting an original allocation of the registers to variables associated with the original code block, which has been executed by the processor device; determining a target allocation of the registers to variables associated with the target code block, which is to be executed by the processor device; selecting a register, from among the processor registers, to be a temporary register, based at least in part on the register conforming to at least one of (i) the register not being allocated to a variable in the original allocation and (ii) the register not being allocated to a variable in the target allocation, wherein the selection of a register to be the temporary register includes: maintaining a first data structure having one bit for each register; setting each first data structure having one bit to a first state in response to the corresponding register being allocated in the target allocation to a variable that is allocated to a different register in the original allocation, and otherwise setting the first data structure to a second state; maintaining a second data structure having one bit for each register; setting each second data structure bit to the first state in response to the corresponding register being allocated in the original allocation to a variable that is allocated to a different register in the target allocation, and otherwise setting the second data structure bit to the second state; changing, by the processor device, from the original allocation to the target allocation using a process that includes: in response to determining that a first variable is allocated to the first register in the original allocation and to the second register in the target allocation, and that the second register is storing a value of a second variable, moving the value of the first variable from the first register to the temporary register, moving the value of the second variable from the second register to free up the second register, and moving the value of the first variable from the temporary register to the second register, such that the first variable is not used as an execution operand while being temporarily stored in the temporary register; and executing the target code block; maintaining a fourth data structure having one bit for each register; and determining each fourth data structure bit as a Boolean logic function of the corresponding first data structure bit and the corresponding second data structure bit; selecting a register, from among the registers, based on the respective fourth data structure being set in the first state; and moving a value from the selected register to a storage medium. 8. The method of claim 7 , wherein the first state is “1” and the second state is “0”, and the Boolean logic function incl

Assignees

Inventors

Classifications

  • Register arrangements · CPC title

  • Instruction analysis, e.g. decoding, instruction word fields · CPC title

  • G06F8/441Primary

    Register allocation; Assignment of physical memory space to logical memory space · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9690584B2 cover?
System and methods are provided for register allocation. An original code block and a target code block associated with a branch of an execution loop are determined. An original allocation of a plurality of physical registers to one or more original variables associated with the original code block is detected. A target allocation of the plurality of physical registers to one or more target var…
Who is the assignee on this patent?
Marvell World Trade Ltd
What technology area does this patent fall under?
Primary CPC classification G06F9/30098. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jun 27 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).