Patent US5745780A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5745780A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for source lookup within a central processing unit

Assignee: International Business Machines Corp
•
Filing: 1996-03-27
•
Granted: 1998-04-28
•
Expires: 2016-03-27
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and apparatus for looking up source matches in a central processing unit (CPU) is utilized to identify dependencies between instructions that have been renamed via buffer renaming techniques. In such instances, when a particular instruction's source is a previous instruction's destination, that match needs to be identified such that dependent relationships between instructions are maintained. The source lookup method and apparatus utilize an allocation pointer and deallocation pointer, which point to the rename buffer, to produce a comparison window. For a given source of a given instruction, the comparison window is used to compare whether the source in question has a match within the rename buffer. If only one match is found, that rename buffer location is flagged to indicate that this particular location has a dependent relationship with the current source in question. If more than one match has been identified, a selection is made to choose the buffer location closest to the allocation pointer.

Inventors

  • 👤 James Edward Phillips
  • 👤 George Quyen Phan

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-08 03:33
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3836; G06F9/3838; G06F9/384

Claims Analysis

Total Claims: 23
Claim 1
Independent Claim 126 words
A source look-up method comprising the steps of: a) determining a comparison window between an allocation pointer and a deallocation pointer, wherein the allocation pointer points to an entry in a buffer to be allocated next and wherein the deallocation pointer points to an entry in the buffer to be deallocated next; b) for each entry in the buffer between the allocation pointer and the deallocation pointer, comparing a stored value in the each entry with a source value to produce a comparison output; c) flagging each match of the comparison of the stored value in the each entry with the source value to produce flagged matches; and d) identifying, from the flagged matches, an entry having source information of interest based on the allocation pointer.
Claim 2
Dependent Claim 126 words
A source look-up method comprising the steps of: a) determining a comparison window between an allocation pointer and a deallocation pointer, wherein the allocation pointer points to an entry in a buffer to be allocated next and wherein the deallocation pointer points to an entry in the buffer to be deallocated next; b) for each entry in the buffer between the allocation pointer and the deallocation pointer, comparing a stored value in the each entry with a source value to produce a comparison output; c) flagging each match of the comparison of the stored value in the each entry with the source value to produce flagged matches; and d) identifying, from the flagged matches, an entry having source information of interest based on the allocation pointer.
Claim 3
Dependent Claim 50 words
The method of claim 1, wherein step (a) further comprises the steps of: converting the allocation pointer into an encoded binary allocation value; converting the deallocation pointer into an encoded binary deallocation value; and ORing the encoded binary allocation value and the encoded deallocation value to produce an encoded window.
Claim 4
Dependent Claim 43 words
The method of claim 2 further comprises the steps of: performing a two's complement operation on the allocation pointer to produce the encoded binary allocation value; and performing a two's complement operation on the deallocation pointer to produce the encoded binary deallocation value.
Claim 5
Dependent Claim 28 words
The method of claim 3, wherein the ORing step further comprises: exclusive ORing the encoded binary allocation value and the encoded deallocation value to produce the comparison window.
Claim 6
Dependent Claim 42 words
The method of claim 4, wherein the production of the comparison window further comprises: inverting the comparison window when the allocation pointer wraps around the buffer; and reversing the inversion of the comparison window when the deallocation pointer wraps around the buffer.
Claim 7
Dependent Claim 35 words
The method of claim 2 further comprises: inverting the encoded window to produce an inverted encoded window; and ANDing bits of the inverted encoded window with bits of the comparison output to flag the matches.
Claim 8
Dependent Claim 52 words
The method of claim 6, wherein the identifying, from the flagged matches, an entry having source information of interest based on the allocation pointer further comprises: selecting the entry having source information based on proximity of bit location of the entry having source information within the comparison output to the allocation pointer.
Claim 9
Dependent Claim 18 words
The method of claim 1 further comprises: performing steps (a) through (d) at either dispatch or at execution.
Claim 10
Dependent Claim 277 words
A source look-up circuit comprising: a buffer allocation queue that stores register destination address, register source address, and an buffer allocation entry of instructions that have been allocated an entry in a rename buffer; a buffer allocation memory operably coupled to the buffer allocation queue, wherein the buffer allocation memory stores allocation information pertaining to allocation of a register destination to a rename buffer location in the buffer allocation entry; an allocation pointer circuit operably coupled to the buffer allocation queue and the buffer allocation memory, wherein the allocation pointer circuit provides an allocation pointer; a deallocation pointer register operably coupled to the buffer allocation memory, wherein the deallocation pointer registers stores a deallocation pointer that points to an allocated next entry in the rename buffer to be deallocated; a comparison bank circuit operably coupled to the buffer allocation queue, the buffer allocation memory, the allocation pointer circuit, and the deallocation pointer register, wherein the comparison bank circuit includes: a plurality of comparators, each operably coupled to receive a comparison address and an entry of the buffer allocation memory, the plurality of comparators producing a binary comparison value; determining means, operably coupled to the plurality of comparators, the allocation pointer register, and the deallocation pointer, for determining whether at least one dependent destination address is stored in an entry between the allocation pointer and the deallocation pointer and the at least one dependent destination address has the same address as the comparison address; and selection means, operably coupled to the determining means and the allocation pointer register, for selecting one of the at least one dependent destination addresses as a dependent destination address having information of interest.
Claim 11
Dependent Claim 277 words
A source look-up circuit comprising: a buffer allocation queue that stores register destination address, register source address, and an buffer allocation entry of instructions that have been allocated an entry in a rename buffer; a buffer allocation memory operably coupled to the buffer allocation queue, wherein the buffer allocation memory stores allocation information pertaining to allocation of a register destination to a rename buffer location in the buffer allocation entry; an allocation pointer circuit operably coupled to the buffer allocation queue and the buffer allocation memory, wherein the allocation pointer circuit provides an allocation pointer; a deallocation pointer register operably coupled to the buffer allocation memory, wherein the deallocation pointer registers stores a deallocation pointer that points to an allocated next entry in the rename buffer to be deallocated; a comparison bank circuit operably coupled to the buffer allocation queue, the buffer allocation memory, the allocation pointer circuit, and the deallocation pointer register, wherein the comparison bank circuit includes: a plurality of comparators, each operably coupled to receive a comparison address and an entry of the buffer allocation memory, the plurality of comparators producing a binary comparison value; determining means, operably coupled to the plurality of comparators, the allocation pointer register, and the deallocation pointer, for determining whether at least one dependent destination address is stored in an entry between the allocation pointer and the deallocation pointer and the at least one dependent destination address has the same address as the comparison address; and selection means, operably coupled to the determining means and the allocation pointer register, for selecting one of the at least one dependent destination addresses as a dependent destination address having information of interest.
Claim 12
Dependent Claim 64 words
The source look-up circuit of claim 9 further comprises: a multiplexor operably coupled to the plurality of comparators, wherein the multiplexor receives, as input signals, the register source address and at least one current rename destination address and provides, based on a control signal, either the register source address or one of the at least one current rename source address as the comparison address.
Claim 13
Dependent Claim 101 words
The source look-up circuit of claim 9, wherein the determining means further comprises: means for encoding the allocation pointer to produce an encoded allocation pointer; means for encoding the deallocation pointer to produce an encoded deallocation pointer; a plurality of OR gates for ORing bits of the encoded allocation pointer with bits of the encoded deallocation pointer to produce a binary comparison window; and a plurality of AND gates for ANDing bits of the comparison window with bits of the binary comparison value to identify entries in the buffer allocation memory that are storing the at least one dependent destination address.
Claim 14
Dependent Claim 66 words
The source look-up circuit of claim 11, wherein the determining means further comprises: wrap-around circuit operably coupled to the allocation pointer register, the deallocation pointer register, and the plurality of OR gates, wherein the wrap-around circuit modifies the binary comparison window when the allocation pointer wraps around the buffer allocation memory and unmodifies the binary comparison window when the deallocation pointer wraps-around the buffer allocation memory.
Claim 15
Dependent Claim 42 words
The source look-up circuit of claim 9, wherein the allocation pointer circuit further comprises an allocation pointer register and a multiplexor, wherein the allocation pointer register stores an allocation pointer that points to a next entry for allocation in the rename buffer.
Claim 16
Dependent Claim 350 words
An integrated circuit comprising: data cache; and floating point unit operably coupled to the data cache, wherein the floating point unit includes: floating point register having addressable register locations, wherein an addressable register location is designated as a destination of an executable instruction; pipe assembler operably coupled to the floating point register, the pipe assembler performs at least part of the executable instruction; rename buffer operably coupled to the floating point register, wherein the rename buffer stores, at an allocated buffer location, the addressable register location; a buffer allocation queue that stores the addressable register location, a source address, and the allocated buffer location of the executable instruction; a buffer allocation memory operably coupled to the buffer allocation queue, wherein the buffer allocation memory stores the addressable register location in an entry having a corresponding address as the allocated buffer location; an allocation pointer circuit operably coupled to the buffer allocation queue and the buffer allocation memory, wherein the allocation pointer circuit provides an allocation pointer; a deallocation pointer register operably coupled to the buffer allocation memory, wherein the deallocation pointer registers stores a deallocation pointer that points to an allocated entry in the rename buffer to is to be deallocated next; a comparison bank circuit operably coupled to the buffer allocation queue, the buffer allocation memory, the allocation pointer circuit, and the deallocation pointer register, wherein the comparison bank circuit includes: a plurality of comparators, each operably coupled to receive a comparison address and an entry of the buffer allocation memory, the plurality of comparators producing a binary comparison value; determining means, operably coupled to the plurality of comparators, the allocation pointer register, and the deallocation pointer, for determining whether at least one dependent destination address is stored in an entry between the allocation pointer and the deallocation pointer and the at least one dependent destination address has the same address as the comparison address; and selection means, operably coupled to the determining means and the allocation pointer register, for selecting one of the at least one dependent destination addresses as a dependent destination address having information of interest.
Claim 17
Dependent Claim 350 words
An integrated circuit comprising: data cache; and floating point unit operably coupled to the data cache, wherein the floating point unit includes: floating point register having addressable register locations, wherein an addressable register location is designated as a destination of an executable instruction; pipe assembler operably coupled to the floating point register, the pipe assembler performs at least part of the executable instruction; rename buffer operably coupled to the floating point register, wherein the rename buffer stores, at an allocated buffer location, the addressable register location; a buffer allocation queue that stores the addressable register location, a source address, and the allocated buffer location of the executable instruction; a buffer allocation memory operably coupled to the buffer allocation queue, wherein the buffer allocation memory stores the addressable register location in an entry having a corresponding address as the allocated buffer location; an allocation pointer circuit operably coupled to the buffer allocation queue and the buffer allocation memory, wherein the allocation pointer circuit provides an allocation pointer; a deallocation pointer register operably coupled to the buffer allocation memory, wherein the deallocation pointer registers stores a deallocation pointer that points to an allocated entry in the rename buffer to is to be deallocated next; a comparison bank circuit operably coupled to the buffer allocation queue, the buffer allocation memory, the allocation pointer circuit, and the deallocation pointer register, wherein the comparison bank circuit includes: a plurality of comparators, each operably coupled to receive a comparison address and an entry of the buffer allocation memory, the plurality of comparators producing a binary comparison value; determining means, operably coupled to the plurality of comparators, the allocation pointer register, and the deallocation pointer, for determining whether at least one dependent destination address is stored in an entry between the allocation pointer and the deallocation pointer and the at least one dependent destination address has the same address as the comparison address; and selection means, operably coupled to the determining means and the allocation pointer register, for selecting one of the at least one dependent destination addresses as a dependent destination address having information of interest.
Claim 18
Dependent Claim 63 words
The integrated circuit of claim 14 further comprises: a multiplexor operably coupled to the plurality of comparators, wherein the multiplexor receives, as input signals, the register source address and at least one current rename destination address and provides, based on a control signal, either the register source address or one of the at least one current rename source address as the comparison address.
Claim 19
Dependent Claim 100 words
The integrated circuit of claim 14, wherein the determining means further comprises: means for encoding the allocation pointer to produce an encoded allocation pointer; means for encoding the deallocation pointer to produce an encoded deallocation pointer; a plurality of OR gates for ORing bits of the encoded allocation pointer with bits of the encoded deallocation pointer to produce a binary comparison window; and a plurality of AND gates for ANDing bits of the comparison window with bits of the binary comparison value to identify entries in the buffer allocation memory that are storing the at least one dependent destination address.
Claim 20
Dependent Claim 65 words
The integrated circuit of claim 16, wherein the determining means further comprises: wrap-around circuit operably coupled to the allocation pointer register, the deallocation pointer register, and the plurality of OR gates, wherein the wrap-around circuit modifies the binary comparison window when the allocation pointer wraps around the buffer allocation memory and unmodifies the binary comparison window when the deallocation pointer wraps-around the buffer allocation memory.
Claim 21
Dependent Claim 41 words
The integrated circuit of claim 14, wherein the allocation pointer circuit further comprises an allocation pointer register and a multiplexor, wherein the allocation pointer register stores an allocation pointer that points to a next entry for allocation in the rename buffer.
Claim 22
Dependent Claim 358 words
An integrated circuit comprising: data cache; instruction cache; and fixed point unit operably coupled to the data cache and the instruction cache, wherein the fixed point unit includes: general purpose register having addressable register locations, wherein an addressable register location is designated as a destination of an executable instruction; arithmetic logic unit operably coupled to the fixed point register, the arithmetic logic unit performs at least part of the executable instruction; rename buffer operably coupled to the fixed point register, wherein the rename buffer stores, at an allocated buffer location, the addressable register location; a buffer allocation queue that stores the addressable register location, a source address, and the allocated buffer location of the executable instruction; a buffer allocation memory operably coupled to the buffer allocation queue, wherein the buffer allocation memory stores the addressable register location in an entry having a corresponding address as the allocated buffer location; an allocation pointer circuit operably coupled to the buffer allocation queue and the buffer allocation memory, wherein the allocation pointer circuit provides an allocation pointer; a deallocation pointer register operably coupled to the buffer allocation memory, wherein the deallocation pointer registers stores a deallocation pointer that points to an allocated entry in the rename buffer to is to be deallocated next; a comparison bank circuit operably coupled to the buffer allocation queue, the buffer allocation memory, the allocation pointer circuit, and the deallocation pointer register, wherein the comparison bank circuit includes: a plurality of comparators, each operably coupled to receive a comparison address and an entry of the buffer allocation memory, the plurality of comparators producing a binary comparison value; determining means, operably coupled to the plurality of comparators, the allocation pointer register, and the deallocation pointer, for determining whether at least one dependent destination address is stored in an entry between the allocation pointer and the deallocation pointer and the at least one dependent destination address has the same address as the comparison address; and selection means, operably coupled to the determining means and the allocation pointer register, for selecting one of the at least one dependent destination addresses as a dependent destination address having information of interest.
Claim 23
Dependent Claim 358 words
An integrated circuit comprising: data cache; instruction cache; and fixed point unit operably coupled to the data cache and the instruction cache, wherein the fixed point unit includes: general purpose register having addressable register locations, wherein an addressable register location is designated as a destination of an executable instruction; arithmetic logic unit operably coupled to the fixed point register, the arithmetic logic unit performs at least part of the executable instruction; rename buffer operably coupled to the fixed point register, wherein the rename buffer stores, at an allocated buffer location, the addressable register location; a buffer allocation queue that stores the addressable register location, a source address, and the allocated buffer location of the executable instruction; a buffer allocation memory operably coupled to the buffer allocation queue, wherein the buffer allocation memory stores the addressable register location in an entry having a corresponding address as the allocated buffer location; an allocation pointer circuit operably coupled to the buffer allocation queue and the buffer allocation memory, wherein the allocation pointer circuit provides an allocation pointer; a deallocation pointer register operably coupled to the buffer allocation memory, wherein the deallocation pointer registers stores a deallocation pointer that points to an allocated entry in the rename buffer to is to be deallocated next; a comparison bank circuit operably coupled to the buffer allocation queue, the buffer allocation memory, the allocation pointer circuit, and the deallocation pointer register, wherein the comparison bank circuit includes: a plurality of comparators, each operably coupled to receive a comparison address and an entry of the buffer allocation memory, the plurality of comparators producing a binary comparison value; determining means, operably coupled to the plurality of comparators, the allocation pointer register, and the deallocation pointer, for determining whether at least one dependent destination address is stored in an entry between the allocation pointer and the deallocation pointer and the at least one dependent destination address has the same address as the comparison address; and selection means, operably coupled to the determining means and the allocation pointer register, for selecting one of the at least one dependent destination addresses as a dependent destination address having information of interest.

References Cited (Backward Citations)

US4574349A Cited
US4992938A Cited
US5134561A Cited
US5280615A Cited
US5197132A Cited
US5261071A Cited
US5355457A Cited
US5560025A Cited
US5627984A Cited
US5574928A Cited
US5584037A Cited
US5490280A Cited
US5649225A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-04-27 2001-10-27 2002-04-28 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-04-27 2005-10-27 2006-04-28 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-04-27 2009-10-27 2010-04-28 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag