← Back to Patent Explorer
US5519841A Expired / Lapsed US ⏱️ 0.0 years remaining

Multi instruction register mapper

Assignee: Hewlett Packard Development Co LP
•
Filing: 1992-11-12
•
Granted: 1996-05-21
•
Expires: 2012-11-12
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A pipelined processor includes an instruction unit including a register mapper, to map register operand fields of a set of instructions and an instruction scheduler, fed by the set of instructions, to reorder the issuance of the set of instructions from the processor. The mapped register operand fields are associated with the corresponding instructions of the reordered set of instructions prior to issuance of the instructions. The processor further includes a branch prediction table which maps a stored pattern of past histories associated with a branch instruction to a more likely prediction direction of the branch instruction. The processor further includes a memory reference tagging store associated with the instruction scheduler so that the scheduler can reorder memory reference instructions without knowing the actual memory location addressed by the memory reference instruction.

Inventors

  • 👤 David J. Sager
  • 👤 Simon C. Steely, Jr.
  • 👤 David B. Fite, Jr.

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-02 22:10
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3861; G06F9/3863; G06F9/32; G06F9/3802; G06F9/3804; G06F9/3806; G06F9/3814; G06F9/3836; G06F9/3838; G06F9/384; G06F9/3842; G06F9/3848; G06F9/3854; G06F9/3856; G06F9/3858

Claims Analysis

Total Claims: 20
Claim 1
Independent Claim 247 words
Apparatus for mapping logical registers, comprising: a map comprising: means for storing a current set of register numbers which are available for assignment in a current cycle and for storing a previous set of register numbers which were assigned in a previous cycle; means for storing a current set of logical register destination operands and for storing a previous set of logical register destination operands; a plurality of register files corresponding to a number of instructions to be mapped in a cycle, said register files each having a plurality of locations, each register file having a plurality of write ports corresponding to said number of instructions to be mapped in a cycle, with said write ports of each of said register files having a write address port and a write data port, and with a first write port of a first one of said register files having the corresponding write address port fed by a first one of the logical destination register operands of a previous set of instructions and the corresponding write data port fed by a first one of the register numbers of the previous set of instructions, and a last write port of a first one of said register files having the corresponding write address port fed by a last one of the logical destination register operands of the previous set of instructions and the corresponding write data port fed by a last one of the register numbers of the previous set of instructions.
Claim 2
Dependent Claim 247 words
Apparatus for mapping logical registers, comprising: a map comprising: means for storing a current set of register numbers which are available for assignment in a current cycle and for storing a previous set of register numbers which were assigned in a previous cycle; means for storing a current set of logical register destination operands and for storing a previous set of logical register destination operands; a plurality of register files corresponding to a number of instructions to be mapped in a cycle, said register files each having a plurality of locations, each register file having a plurality of write ports corresponding to said number of instructions to be mapped in a cycle, with said write ports of each of said register files having a write address port and a write data port, and with a first write port of a first one of said register files having the corresponding write address port fed by a first one of the logical destination register operands of a previous set of instructions and the corresponding write data port fed by a first one of the register numbers of the previous set of instructions, and a last write port of a first one of said register files having the corresponding write address port fed by a last one of the logical destination register operands of the previous set of instructions and the corresponding write data port fed by a last one of the register numbers of the previous set of instructions.
Claim 3
Dependent Claim 121 words
The apparatus as recited in claim 1 wherein a first write port of a second one of said register files has the corresponding write address port fed by a second one of the logical destination register operands of the previous set of instructions and the corresponding write data port fed by a second one of the register numbers of the previous set of instructions, and a last write port of the second one of said register files having the corresponding write address port fed by a first one of the logical destination register operands of the current set of instructions and the corresponding write data port fed by a first one of the register numbers of the current set of instructions.
Claim 4
Dependent Claim 38 words
The apparatus of claim 1 wherein said means for storing said current and previous set of register numbers, further comprises: means for maintaining a list of destination operands which are free to be used in a current cycle.
Claim 5
Dependent Claim 64 words
The apparatus as recited in claim 3 wherein each one of said plurality of register files further includes: three read ports each port having an address port fed by one of a pair of source logical operand register and a destination logical operand register to provide in response thereto a new register number corresponding to a physical location containing the corresponding logical register operands.
Claim 6
Dependent Claim 28 words
The apparatus as recited in claim 4 further comprising: means for maintaining a list of each logical register operand which was reassigned in a previous number of cycles.
Claim 7
Dependent Claim 25 words
The apparatus as recited in claim 5 further comprising: means for delaying reuse of assigned register numbers until a selected number of cycles has elapsed.
Claim 8
Dependent Claim 25 words
The apparatus as recited in claim 6 further comprising: means for compressing the delayed register numbers to provide a complete set of available register numbers.
Claim 9
Dependent Claim 33 words
The apparatus as recited in claim 7 further comprising: means, responsive to said complete set of available registers, for freeing up the use of registers assigned by said means for maintaining a list.
Claim 10
Dependent Claim 298 words
The apparatus as recited in claim 1 further comprising: a backup map comprising: means for storing a first previous set of register numbers which were assigned in a corresponding first cycle of a previous set of cycles of the register mapper and for storing a second previous set of register numbers which were assigned in a second cycle of the previous set of cycles of the register mapper; means for storing a first previous set of logical register destination operands and for storing a second previous set of logical register destination operands associated with said first and second previous cycles of the previous set of cycles; a second plurality of register files corresponding to the number of instructions to be backed up during the previous set of cycles, said register files each having a plurality of locations, each register file having a like plurality of write ports, with said write ports of each of said register files having a write address port and a write data port, and with a first write port of a first one of said register files having the corresponding write address port fed by a first one of the logical destination register operands of the second cycle of the previous set of cycles and the corresponding write data port fed by a first one of the register numbers of the second cycle of the previous set of cycles, and a last write port of a first one of said register files having the corresponding write address port fed by a last one of the logical destination register operands of the second cycle of the previous set of cycles and the corresponding write data port fed by a last one of the register numbers of the second cycle of the previous set of cycles.
Claim 11
Dependent Claim 135 words
The apparatus as recited in claim 9 wherein a first write port of a second one of said files has the corresponding write address port fed by a second one of the logical destination register operands of the second cycle of the previous set of cycles and the corresponding write data port fed by a second one of the register numbers of the second cycles of the previous set of cycles, and a last write port of the second one of said files having the corresponding write address port fed by a first one of the logical destination register operands of the first cycles of the previous set of cycles and the corresponding write data port fed by a first one of the register numbers of the first cycle of the previous set of cycles.
Claim 12
Dependent Claim 38 words
The apparatus of claim 10 wherein said means for storing said current and previous sets of register numbers, further comprises: means for maintaining a list of destination operands which are free to be used in a current cycle.
Claim 13
Dependent Claim 75 words
The apparatus as recited in claim 11 wherein each one of said plurality of register files further includes: three read ports each port having an address port fed by one of a pair of source logical operands and a destination logical operand of a selected one of the set of instructions and to provide in response thereto a new register number corresponding to a physical location of the contents of the corresponding logical register operands.
Claim 14
Dependent Claim 28 words
The apparatus as recited in claim 12 further comprising: means for maintaining a list of each logical register operand which was reassigned in a previous number of cycles.
Claim 15
Dependent Claim 25 words
The apparatus as recited in claim 13 further comprising: means for delaying reuse of assigned register numbers until a selected number of cycles has elapsed.
Claim 16
Dependent Claim 24 words
The apparatus as recited in claim 14 further comprising: means for compressing the delayed register numbers to provide a complete set of available registers.
Claim 17
Dependent Claim 31 words
The apparatus as recited in claim 15 further comprising: means, responsive to said complete set of available registers, for freeing up the use of registers assigned by said list maintaining means.
Claim 18
Dependent Claim 375 words
Apparatus for mapping n logical registers used in the execution of a plurality of instructions, comprising: a map comprising: a plurality of register files corresponding to the number of instructions to be mapped in a cycle, said register files each having a plurality of locations, each register file having a like plurality of write ports and three read ports for providing an output from said register file, with said write ports of each of said register files having a write address port and a write data port; means for maintaining a list of locations in each of said register files which are free to be used in a current cycle, said means further comprising: means for storing a current set of register numbers which are available for assignment in the current cycle; means for storing a previous set of register numbers which were assigned in the previous cycle; means for storing a current set of logical register destination operands and for storing a previous set of logical register destination operands; means for providing the previous and current sets of register numbers as data to said register files with a first one of said register files having a first one of said register numbers as data to a first data port of said register file, and each succeeding one of said register files having each succeeding one of said register numbers input as data to a first data port of each of said succeeding files, and for providing the previous and current sets of register operands as addresses to said register files with a first one of said files having a first one of said register operands as an address to a first address port of said first file, and each succeeding one of said files having each succeeding one of said register operands as an address to a first address port of each of said succeeding files; means for providing addresses to said read ports of each of said files to provide at the output of said files a register address corresponding to a physical home of each of said previous logical register destination operands; and means for maintaining a list of each logical register operand which was reassigned in a previous number of cycles.
Claim 19
Dependent Claim 375 words
Apparatus for mapping n logical registers used in the execution of a plurality of instructions, comprising: a map comprising: a plurality of register files corresponding to the number of instructions to be mapped in a cycle, said register files each having a plurality of locations, each register file having a like plurality of write ports and three read ports for providing an output from said register file, with said write ports of each of said register files having a write address port and a write data port; means for maintaining a list of locations in each of said register files which are free to be used in a current cycle, said means further comprising: means for storing a current set of register numbers which are available for assignment in the current cycle; means for storing a previous set of register numbers which were assigned in the previous cycle; means for storing a current set of logical register destination operands and for storing a previous set of logical register destination operands; means for providing the previous and current sets of register numbers as data to said register files with a first one of said register files having a first one of said register numbers as data to a first data port of said register file, and each succeeding one of said register files having each succeeding one of said register numbers input as data to a first data port of each of said succeeding files, and for providing the previous and current sets of register operands as addresses to said register files with a first one of said files having a first one of said register operands as an address to a first address port of said first file, and each succeeding one of said files having each succeeding one of said register operands as an address to a first address port of each of said succeeding files; means for providing addresses to said read ports of each of said files to provide at the output of said files a register address corresponding to a physical home of each of said previous logical register destination operands; and means for maintaining a list of each logical register operand which was reassigned in a previous number of cycles.
Claim 20
Dependent Claim 324 words
The apparatus as recited in claim 17 further comprising: a backup map, comprising: a plurality of register files corresponding to the number of instructions mapped in a previous first set of cycles, said files each having a plurality of locations, each file having a like plurality of write ports and three read ports with said write ports of each of said register files having a write address port and a write data port; means for storing a first one of a previous set of register numbers which were assigned in the previous first set of cycles; means for storing a second one of a previous set of register numbers which were assigned in the previous first set of cycles; means for storing a first one of a previous set of logical register destination operands and for storing a second one of a previous set of logical destination register operands; means for providing output from a first one of said register files having a first one of said register numbers of the second one of the first previous set of cycles as data to a first data port of said file, and each succeeding one of said files having each succeeding one of said register numbers of said second one of said first previous set of cycles as data to a first data port of each of said succeeding files, and for providing a first one of said register operands of the first previous set of cycles as an address to a first address port of said first file, and each succeeding one of said register operands of said first previous set of cycles as an address to a first address port of each of said succeeding files; and means for providing addresses to said read ports of each of said files to provide at the output of said files a register address corresponding to a physical home of each of said logical register operands.

References Cited (Backward Citations)

US5197132A Cited
US5283873A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1999-05-21 1999-11-20 2000-05-21 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2003-05-21 2003-11-20 2004-05-21 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2007-05-21 2007-11-20 2008-05-21 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag