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

Superscalar microprocessor including flag operand renaming and forwarding apparatus

Assignee: GlobalFoundries Inc
•
Filing: 1994-06-01
•
Granted: 1997-05-20
•
Expires: 2014-06-01
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A superscalar microprocessor is provided with a reorder buffer for storing the speculative state of the microprocessor and a register file for storing the real state of the microprocessor. A flags register stores the real state of flags that are updated by flag modifying instructions which are executed by the functional units of the microprocessor. To enhance the performance of the microprocessor with respect to conditional branching instructions, the reorder buffer includes a flag storage area for storing flags that are updated by flag modifying instructions. The flags are renamed to make possible the earlier execution of branch instructions which depend on flag modifying instructions. If a flag is not yet determined, then a flag tag is associated with the flag storage area in place of that flag until the actual flag value is determined. A flag operand bus and a flag tag bus are provided between the flag storage area and the branching functional unit so that the requested flag or flag tags are provided to instructions which are executed in the branching functional unit.

Inventors

  • 👤 Scott A. White
  • 👤 David S. Christie
  • 👤 Michael D. Goddard

Bibliographic Details

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

Claims Analysis

Total Claims: 53
Claim 1
Independent Claim 145 words
A superscalar microprocessor comprising: a decoder for decoding instructions contained in an instruction stream and translating decoded instructions into ROPs; a reorder buffer, coupled to the decoder, for storing the speculative state of the microprocessor; a register file, coupled to the reorder buffer, for storing the real state of the microprocessor; the reorder buffer including a reorder buffer array having a plurality of storage locations which include an integer result portion for storing a speculative integer result and a flag result portion for storing speculative flag information associated with the integer result, the flag result portion and the integer result portion being concatenated to form a floating point storage location which accommodates storage of floating point results which are wider than the integer results; and a real flags register, coupled to the reorder buffer, for storing flag information which is retired from the reorder buffer.
Claim 2
Dependent Claim 145 words
A superscalar microprocessor comprising: a decoder for decoding instructions contained in an instruction stream and translating decoded instructions into ROPs; a reorder buffer, coupled to the decoder, for storing the speculative state of the microprocessor; a register file, coupled to the reorder buffer, for storing the real state of the microprocessor; the reorder buffer including a reorder buffer array having a plurality of storage locations which include an integer result portion for storing a speculative integer result and a flag result portion for storing speculative flag information associated with the integer result, the flag result portion and the integer result portion being concatenated to form a floating point storage location which accommodates storage of floating point results which are wider than the integer results; and a real flags register, coupled to the reorder buffer, for storing flag information which is retired from the reorder buffer.
Claim 3
Dependent Claim 42 words
The microprocessor of claim 1 further comprising: a floating point unit coupled to the decoder and the reorder buffer; a branch unit coupled to the decoder and the reorder buffer; and an integer unit coupled to the decoder and the reorder buffer.
Claim 4
Dependent Claim 70 words
The microprocessor of claim 2 wherein the decoder further comprises a dispatch window for dispatching.. flag-modifying ROPs to the integer unit and for dispatching branch ROPs to the branch unit and for dispatching floating point ROPs to the floating point unit, the integer unit producing an integer result when an integer ROP executes therein, the floating point unit producing a floating point result when a floating point ROP executes therein.
Claim 5
Dependent Claim 44 words
The microprocessor of claim 3 wherein the reorder buffer includes renaming means for allocating one of the flag result portions of the reorder buffer to the flag result of a particular flag-modifying ROP dispatched by the decoder, thus producing an allocated flag result portion.
Claim 6
Dependent Claim 39 words
The microprocessor of claim 4 wherein the renaming means further comprises means for associating a flag tag with the allocated flag result portion while execution of the flag modifying ROP corresponding to the allocated flag result portion is pending.
Claim 7
Dependent Claim 32 words
The microprocessor of claim 5 further comprising a flag tag bus, coupled between the reorder buffer and the branch unit, for communicating flag tags from the reorder buffer to the branch unit.
Claim 8
Dependent Claim 41 words
The microprocessor of claim 6 further comprising a flag operand bus, coupled between the reorder buffer, the real flags register and the branch unit, for communicating flag results from the reorder buffer and the real flags register to the branch unit.
Claim 9
Dependent Claim 45 words
The microprocessor of claim 7 wherein the flag result portion exhibits a plurality of flag bit positions for storing a plurality of flags, said plurality of flags being grouped into flag sub-groups according to which flags are updated together when a flag modifying ROP executes.
Claim 10
Dependent Claim 18 words
The microprocessor of claim 8 further comprising means for associating a flag tag with a particular flag sub-group.
Claim 11
Dependent Claim 54 words
The microprocessor of claim 9 further comprising a plurality of flag tag busses equal in number to the number of flag sub-groups, the flag tag buses being coupled between the flag result portion of the reorder buffer and the branch unit, each flag tag bus communicating a respective flag sub-group to the branch unit.
Claim 12
Dependent Claim 42 words
The microprocessor of claim 10 further comprising a plurality of dependency checkers, a respective dependency checker being provided for each of the flag sub-groups to determine if any dependencies exist with respect to the instructions associated with the flags of a sub-group.
Claim 13
Dependent Claim 45 words
The microprocessor of claim 2 wherein the flag result portion exhibits a plurality of flag bit positions for storing a plurality of flags, said plurality of flags being grouped into flag sub-groups according to which flags are updated together when a flag modifying ROP executes.
Claim 14
Dependent Claim 18 words
The microprocessor of claim 12 further comprising means for associating a flag tag with a particular flag sub-group.
Claim 15
Dependent Claim 54 words
The microprocessor of claim 13 further comprising a plurality of flag tag busses equal in number to the number of flag sub-groups, the flag tag buses being coupled between the flag result portion of the reorder buffer and the branch unit, each flag tag bus communicating a respective flag sub-group to the branch unit.
Claim 16
Dependent Claim 42 words
The microprocessor of claim 14 further comprising a plurality of dependency checkers, a respective dependency checker being provided for each of the flag sub-groups to determine if any dependencies exist with respect to the instructions associated with the flags of a sub-group.
Claim 17
Dependent Claim 26 words
The microprocessor of claim 2 further comprising a result bus coupling the branch unit, the integer unit, the floating point unit and the reorder buffer together.
Claim 18
Dependent Claim 86 words
The microprocessor of claim 16 wherein the result bus exhibits a total data width equal to the width of floating point results such that floating point results can be transmitted on the total width of the result bus, the result bus including an integer result portion for transmitting integer results exhibiting a data width less than the data width of floating point results and a further including a remaining flag result portion for transmitting flag results associated with an integer result of a flag modifying ROP.
Claim 19
Dependent Claim 18 words
The microprocessor of claim 1 combined with an external memory for providing instructions and data to the microprocessor.
Claim 20
Dependent Claim 18 words
The microprocessor of claim 2 combined with an external memory for providing instructions and data to the microprocessor.
Claim 21
Dependent Claim 139 words
A superscalar microprocessor comprising: a decoder for decoding instructions contained in an instruction stream; a reorder buffer, coupled to the decoder, for storing the speculative state of the microprocessor; a register file, coupled to the reorder buffer, for storing the real state of the microprocessor; the reorder buffer including a reorder buffer array having a plurality of storage locations which include an integer result portion for storing a speculative integer result and a flag result portion for storing speculative flag information associated with the integer result, the flag result portion and the integer result portion being concatenated to form a floating point storage location which accommodates storage of floating point results which are wider than the integer results; and a real flags register, coupled to the reorder buffer, for storing flag information which is retired from the reorder buffer.
Claim 22
Dependent Claim 139 words
A superscalar microprocessor comprising: a decoder for decoding instructions contained in an instruction stream; a reorder buffer, coupled to the decoder, for storing the speculative state of the microprocessor; a register file, coupled to the reorder buffer, for storing the real state of the microprocessor; the reorder buffer including a reorder buffer array having a plurality of storage locations which include an integer result portion for storing a speculative integer result and a flag result portion for storing speculative flag information associated with the integer result, the flag result portion and the integer result portion being concatenated to form a floating point storage location which accommodates storage of floating point results which are wider than the integer results; and a real flags register, coupled to the reorder buffer, for storing flag information which is retired from the reorder buffer.
Claim 23
Dependent Claim 42 words
The microprocessor of claim 20 further comprising: a floating point unit coupled to the decoder and the reorder buffer; a branch unit coupled to the decoder and the reorder buffer; and an integer unit coupled to the decoder and the reorder buffer.
Claim 24
Dependent Claim 70 words
The microprocessor of claim 21 wherein the decoder further comprises a dispatch window for dispatching flag-modifying instructions to the integer unit and for dispatching branch instructions to the branch unit and for dispatching floating point instructions to the floating point unit, the integer unit producing an integer result when an integer instruction executes therein, the floating point unit producing a floating point result when a floating point instruction executes therein.
Claim 25
Dependent Claim 44 words
The microprocessor of claim 22 wherein the reorder buffer includes renaming means for allocating one of the flag result portions of the reorder buffer to the flag result of a particular flag-modifying instruction dispatched by the decoder, thus producing an allocated flag result portion.
Claim 26
Dependent Claim 39 words
The microprocessor of claim 23 wherein the renaming means further comprises means for associating a flag tag with the allocated flag result portion while execution of the flag modifying instruction corresponding to the allocated flag result portion is pending.
Claim 27
Dependent Claim 32 words
The microprocessor of claim 24 further comprising a flag tag bus, coupled between the reorder buffer and the branch unit, for communicating flag tags from the reorder buffer to the branch unit.
Claim 28
Dependent Claim 41 words
The microprocessor of claim 25 further comprising a flag operand bus, coupled between the reorder buffer, the real flags register and the branch unit, for communicating flag results from the reorder buffer and the real flags register to the branch unit.
Claim 29
Dependent Claim 18 words
The microprocessor of claim 20 combined with an external memory for providing instructions and data to the microprocessor.
Claim 30
Dependent Claim 18 words
The microprocessor of claim 21 combined with an external memory for providing instructions and data to the microprocessor.
Claim 31
Dependent Claim 145 words
In a superscalar microprocessor including a decoder for decoding multiple RISC-like operations ("ROPs") per microprocessor cycle and a reorder buffer coupled to the decoder, the reorder buffer being further coupled to a register file and a plurality of functional units including a branching unit, the reorder buffer storing the speculative state of said microprocessor, the register file storing the real state of said microprocessor, a method of processing ROPs comprising the steps of: decoding instructions supplied to the microprocessor in an instructions stream and translating decoded instructions into ROPs; dispatching a flag-modifying ROP to one of the functional units designated as the target functional unit; allocating a first memory location in the reorder buffer for the data result of the flag-modifying ROP; and allocating a second memory location in the reorder buffer for storing flag information which is updated when the flag-modifying ROP is executed.
Claim 32
Dependent Claim 145 words
In a superscalar microprocessor including a decoder for decoding multiple RISC-like operations ("ROPs") per microprocessor cycle and a reorder buffer coupled to the decoder, the reorder buffer being further coupled to a register file and a plurality of functional units including a branching unit, the reorder buffer storing the speculative state of said microprocessor, the register file storing the real state of said microprocessor, a method of processing ROPs comprising the steps of: decoding instructions supplied to the microprocessor in an instructions stream and translating decoded instructions into ROPs; dispatching a flag-modifying ROP to one of the functional units designated as the target functional unit; allocating a first memory location in the reorder buffer for the data result of the flag-modifying ROP; and allocating a second memory location in the reorder buffer for storing flag information which is updated when the flag-modifying ROP is executed.
Claim 33
Dependent Claim 40 words
The method of claim 29 further comprising the step of associating a flag tag with the second memory location when the flag modifying ROP is pending execution, the flag tag corresponding to the flag result of the flag modifying ROP.
Claim 34
Dependent Claim 37 words
The method of claim 30 further comprising the step of dispatching a branch ROP to the branching unit, the branch ROP having the flag result of the flag-modifying ROP as a flag operand of the branch ROP.
Claim 35
Dependent Claim 46 words
The method of claim 31 further comprising the steps of: executing the flag modifying ROP by the target functional unit; and sending the flag result of the flag modifying ROP from the target functional unit to the reorder buffer for storage in the second memory location.
Claim 36
Dependent Claim 28 words
The method of claim 32 further comprising the step of sending a flag result from the reorder buffer to the branch unit via a flag operand bus therebetween.
Claim 37
Dependent Claim 62 words
The method of claim 33 further comprising the steps of: executing the flag modifying ROP by the target functional unit; and sending the flag result of the flag modifying ROP from the target functional unit over a result bus to the branch unit for use by the branch unit as a flag operand of the branch ROP dispatched to the branch unit.
Claim 38
Dependent Claim 77 words
The method of claim 34 wherein the result bus exhibits a width sufficient to accommodate a floating point result, the width of an integer result being less than that of a floating point result, the method further comprising the steps of: transmitting an integer result from an integer functional unit onto a first portion of the result bus; and transmitting a flag result from an integer functional unit onto a remaining second portion of the result bus.
Claim 39
Dependent Claim 58 words
The method of claim 29 further comprising the steps of: executing an integer ROP by one of the functional units to produce an integer result exhibiting a first data width, executing a floating point ROP by another of the functional units to produce a floating point result exhibiting a second data width greater than the first data width.
Claim 40
Dependent Claim 19 words
The method of claim 36 further comprising the step of storing an integer result in the first memory location.
Claim 41
Dependent Claim 18 words
The method of claim 37 further comprising the step of storing flag results in the second memory location.
Claim 42
Dependent Claim 44 words
The method of claim 36 wherein the first memory location and the second memory location in the reorder buffer together form a floating point result memory location, the method including the step of storing a floating point result in the floating point memory location.
Claim 43
Dependent Claim 34 words
The method of claim 30 further comprising the step of communicating a flag tag associated with the second memory location in the reorder buffer to the branch functional unit via a flag tag bus.
Claim 44
Dependent Claim 49 words
The method of claim 30 wherein the flag information stored in the second memory location of the reorder buffer includes a plurality of flags, the method further comprising the step of grouping the flags into sub-groups according to which flags are updated together when a flag modifying ROP executes.
Claim 45
Dependent Claim 19 words
The method of claim 30 further comprising the step of providing a respective flag tag to each flag sub-group.
Claim 46
Dependent Claim 28 words
The method of claim 30 further comprising the step of providing a respective flag tag bus between the reorder buffer and the branch unit for each flag subgroup.
Claim 47
Dependent Claim 24 words
The method of claim 29 further comprising the step of dispatching a branch ROP to the branch unit to provide a dispatched branch ROP.
Claim 48
Dependent Claim 28 words
The method of claim 44 further comprising the step of transmitting requested flag information for the dispatched branch ROP to the reorder buffer and the real flags register.
Claim 49
Dependent Claim 36 words
The method of claim 45 further comprising the steps of retiring flag information from the reorder buffer when such flag information becomes non-speculative; and storing this retired flag information in the real flags register upon retirement.
Claim 50
Dependent Claim 42 words
The method of claim 46 further comprising the step of transmitting a real flag from the real flags register to the branch functional unit as a flag operand when no requested flag or flag tag therefor is available from the reorder buffer.
Claim 51
Dependent Claim 37 words
The method of claim 46 further comprising the step of transmitting a flag tag from the reorder buffer to the branch unit when the value of the requested flag is still being determined by another functional unit.
Claim 52
Dependent Claim 39 words
The method of claim 46 further comprising the step of transmitting a flag from the reorder buffer to the branch unit with the requested flag is stored in the reorder buffer and the requested flag value is still speculative.
Claim 53
Dependent Claim 36 words
The method of claim 29 further comprising the steps of providing a real flags register coupled to the reorder buffer and the functional units for storing the real state of flags updated by the functional units.

USPTO Annuity & Maintenance Windows

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

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag