IP Library Granted Patent US 7,308,563
Granted Patent B2
US 7,308,563 · App. 09/968,278 · Granted Dec 11, 2007

Dual-target block register allocation

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 7,308,563
App. No.
09/968,278
Granted
Dec 11, 2007
Kind
B2
Abstract

A method and apparatus for dual-target register allocation is described, intended to enable the efficient mapping/renaming of registers associated with instructions within a pipelined microprocessor architecture.

Claims (52)

1. A method for mapping destination registers within a computer system comprising:

allocating a register block from a pool of register blocks;

mapping a portion of destination registers of a first instruction group to said register block;

preventing the register block from being used by an instruction of the first instruction group until a remaining number of registers within the register block are mapped to destination registers of a second instruction group following the first instruction group.

2. The method of claim 1 further comprising retrieving said register block from a register block shelf after any of said remaining number of registers within said register block are mapped to a destination register.

3. The method of claim 2 wherein said portion of destination registers is used by an instruction within the first instruction group.

4. The method of claim 3 wherein said register block is de-allocated after said first instruction group using said portion of destination registers is retired.

5. The method of claim 1 further comprising retrieving said register block from a register block shelf after a number of instruction groups have had a destination register mapped to said register block.

6. The method of claim 4 wherein the number of registers in said portion of destination registers is equal to a remainder of dividing a number of destination registers to be used in said first instruction group by a size of said register block.

7. The method of claim 6 wherein said remaining number of registers is two.

8. The method of claim 5 wherein said number of instruction groups is two.

9. An apparatus comprising:

an instruction group, said instruction group comprising an instruction enabled to use a destination register;

a register pool comprising a register block, said register block comprising a plurality of registers enabled to be mapped to a plurality of destination registers of the instruction group including said destination register, said register pool being coupled to said instruction group;

a register block storage area to store the register block from the register pool if the register block includes at least one unmapped register after the instruction group is mapped, said register block storage area being enabled to prevent the register block from being used by an instruction of the instruction group until a remaining number of registers within the register block are mapped to destination registers of a second instruction group following the instruction group.

10. The apparatus of claim 9 further comprising a register allocation unit (RAU), said RAU being enabled to allocate a register block from said register pool to be mapped to said destination register, said RAU being coupled to said register pool and said register block storage area.

11. The apparatus of claim 10 wherein said RAU is further enabled to store said address of said register block to said register block storage area.

12. The apparatus of claim 11 further comprising an execution unit, said execution unit being enabled to execute instructions within said instruction group after said register block has been allocated.

13. The apparatus of claim 12 further comprising a retire unit, said retire unit being enabled to retire said instruction group.

14. The apparatus of claim 13 wherein said retire unit is enabled to de-allocate said register block stored within said register block storage area after said instruction group has been retired.

15. The apparatus of claim 14 wherein said remaining number of registers not mapped to a destination register is two.

16. The apparatus of claim 15 wherein said register block storage area is further enabled to store said register block until a number of instruction groups have had a destination register mapped to said register block.

17. The apparatus of claim 16 wherein said number of instruction groups is two.

18. A machine-readable medium having stored thereon a set of instructions, said set of instructions, when executed by a processor, cause said processor to perform a method comprising:

allocating a subset of register blocks of a register pool in which to map a plurality of destination registers, said destination registers being associated with a plurality of instructions within an instruction group;

mapping said plurality of destination registers to said subset of register blocks, each of said subset of register blocks comprising a plurality of registers in which to map said plurality of destination registers;

storing at least one of the register blocks within a register block storage area if a remaining number of registers within said one of said subset of register blocks are not mapped to destination registers of the instruction group;

storing the at least one of the register blocks in the register block storage area until at least one of the remaining number of registers is mapped with a destination register of a second instruction group following the instruction group or a predetermined number of instruction groups following the instruction group have had destination registers mapped to the at least one of the register blocks.

19. The machine-readable medium of claim 18 wherein said method further comprises removing said one of said subset of register blocks from said register block storage area if a destination register is mapped to any of said remaining number of registers.

20. The machine-readable medium of claim 19 wherein said method further comprises retiring an instruction group using destination registers mapped to a register block stored within said register block storage area.

21. The machine-readable medium of claim 20 wherein said retiring comprises de-allocating said register block stored within said register block storage area.

22. The machine-readable medium of claim 21 wherein each of said subset of register blocks comprises four registers.

23. The machine-readable medium of claim 22 wherein said subset of register blocks comprises two register blocks.

24. The machine-readable medium of claim 18 wherein a number of registers within a register block to which a destination register is mapped is equal to a remainder of dividing said plurality of destination registers to be mapped by said plurality of registers within one of said subset of register blocks.

25. The machine-readable medium of claim 24 wherein said remaining number of registers is two.

26. A system comprising:

a first unit to store a group of instructions;

a second unit to allocate a register block from a pool of register blocks in which to map a destination register associated with said group of instructions;

a third unit to map the destination register associated with said group of instructions to said register block;

a fourth unit to prevent the register block from being used by an instruction until a remaining number of registers within the register block are mapped to a destination register associated with a second group of instructions following the group of instructions.

27. The system of claim 26 further comprising a fifth unit to remove said address of said register block from said fourth unit if a destination register is mapped to any of said remaining number of registers within said register block.

28. The system of claim 27 further comprising a sixth unit to retire an instruction group, said instruction group using a destination register mapped to said register block.

29. The system of claim 28 wherein said sixth unit is to enable said register block to be de-allocated after an instruction group using destination registers mapped to said register block is retired.

30. The system of claim 29 wherein said remaining number of registers is two.

31. A method comprising:

determining a number of destination registers of a first instruction block to be mapped to a register block;

allocating a new register block from a register pool and mapping the destination registers to the new register block if the number of destination registers is greater than or equal to a first threshold;

mapping the destination registers to a previously allocated register block if the number of destination registers is less than the first threshold, the previously allocated register block allocated during a previous instruction group and stored in a register block shelf.

32. The method of claim 31 , further comprising storing the previously allocated register block to the register block shelf if the previously allocated register block has less than a threshold number of registers mapped therein.

33. The method of claim 32 , further comprising passing the previously allocated register block from the register block shelf to an execution unit after the destination registers are mapped thereto.

34. The method of claim 32 , further comprising passing the previously allocated register block from the register block shelf to an execution unit after the first instruction block and a second instruction block have been mapped thereto.

35. The method of claim 31 , further comprising passing the new register block to an execution unit with the first instruction block.

Assignments (9)
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050937/0001 →
RELEASE OF SECURITY INTEREST Recorded Aug 23, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 047243/0001 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jun 8, 2017
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 043079/0001 →
PATENT SECURITY AGREEMENT Recorded Jun 2, 2016
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 038954/0001 →
SECURITY INTEREST Recorded May 12, 2016
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038669/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 4, 2013
From: INTEL CORPORATION
To: MICRON TECHNOLOGY, INC.
Reel/Frame 030747/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2001
From: SAMRA, NICHOLAS
To: INTEL CORPORATION
Reel/Frame 012228/0165 →