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

Apparatus for exchanging two stack registers

Assignee: Advanced Micro Devices Inc
•
Filing: 1997-12-18
•
Granted: 2000-08-29
•
Expires: 2017-12-18
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A floating point unit capable of executing multiple instructions in a single clock cycle using a central window and a register map is disclosed. The floating point unit comprises: a plurality of translation units, a future file, a central window, a plurality of functional units, a result queue, and a plurality of physical registers. The floating point unit receives speculative instructions, decodes them, and then stores them in the central window. Speculative top of stack values are generated for each instruction during decoding. Top of stack relative operands are computed to physical registers using a register map. Register stack exchange operations are performed during decoding. Instructions are then stored in the central window, which selects the oldest stored instructions to be issued to each functional pipeline and issues them. Conversion units convert the instruction's operands to an internal format, and normalization units detect and normalize any denormal operands. Finally, the functional pipelines execute the instructions.

Inventors

  • 👤 Thang M. Tran
  • 👤 Derrick R. Meyer

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-08 04:40
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3802; G06F9/3816; G06F9/30098; G06F9/3012; G06F9/30134; G06F9/30145; G06F9/30149; G06F9/30152; G06F9/3818; G06F9/382; G06F9/3824; G06F9/383; G06F9/3836; G06F9/3842

Claims Analysis

Total Claims: 31
Claim 1
Independent Claim 243 words
An apparatus for exchanging two stack registers comprising: a plurality of registers, wherein said plurality of registers are configured to be accessed as a register stack; a plurality of storage locations, wherein each storage location is configured to store a pointer, wherein said pointer is configured to point to one of said plurality of registers, wherein said plurality of storage locations are configured to store one pointer for each register in said plurality of registers; a first plurality of multiplexers, wherein each multiplexer in said first plurality of multiplexers is coupled to each of said plurality of storage locations and is configured to select a particular storage location for output according to a first decoded instruction; and a second plurality of multiplexers, wherein each multiplexer in said second plurality of multiplexers is coupled to receive the output from each multiplexer in said first plurality of multiplexers, wherein each multiplexer in said second plurality of multiplexers is configured to select one of said outputs according to a second decoded instruction, wherein the contents of said plurality of storage locations define a first order of said register stack, wherein the outputs of said first plurality of multiplexers define a second order of said register stack, wherein the outputs of said second plurality of multiplexers define a third order of said register stack, wherein said plurality of storage locations are configured to receive and store the output from each multiplexer in said second plurality of multiplexers.
Claim 2
Independent Claim 243 words
An apparatus for exchanging two stack registers comprising: a plurality of registers, wherein said plurality of registers are configured to be accessed as a register stack; a plurality of storage locations, wherein each storage location is configured to store a pointer, wherein said pointer is configured to point to one of said plurality of registers, wherein said plurality of storage locations are configured to store one pointer for each register in said plurality of registers; a first plurality of multiplexers, wherein each multiplexer in said first plurality of multiplexers is coupled to each of said plurality of storage locations and is configured to select a particular storage location for output according to a first decoded instruction; and a second plurality of multiplexers, wherein each multiplexer in said second plurality of multiplexers is coupled to receive the output from each multiplexer in said first plurality of multiplexers, wherein each multiplexer in said second plurality of multiplexers is configured to select one of said outputs according to a second decoded instruction, wherein the contents of said plurality of storage locations define a first order of said register stack, wherein the outputs of said first plurality of multiplexers define a second order of said register stack, wherein the outputs of said second plurality of multiplexers define a third order of said register stack, wherein said plurality of storage locations are configured to receive and store the output from each multiplexer in said second plurality of multiplexers.
Claim 3
Dependent Claim 54 words
The apparatus for exchanging two stack registers as recited in claim 1, further comprising a stored shift count, wherein said first plurality of multiplexers and said second plurality of multiplexers are configured to adjust said stored shift count to reflect the cumulative effect of any shifts made in the order of said register stack.
Claim 4
Dependent Claim 136 words
The apparatus for exchanging two stack registers as recited in claim 2, further comprising: a first rotator configured to rotate the outputs of said plurality of storage locations according to said stored shift count; a first decoder configured to receive and decode the rotated outputs from said first rotator; a second rotator configured to rotate the outputs of said first plurality of multiplexers according to said stored shift count as adjusted by said first plurality of multiplexers; a second decoder configured to receive and decode the rotated outputs from said second rotator; a third rotator configured to rotate the outputs of said second plurality of multiplexers according to said stored shift count as adjusted by said second plurality of multiplexers; and a third decoder configured to receive and decode the rotated outputs from said third rotator.
Claim 5
Dependent Claim 33 words
The apparatus for exchanging two stack registers as recited in claim 3, further comprising a plurality of virtual tag generators coupled to receive the outputs of said decoders and generate virtual tags therefrom.
Claim 6
Dependent Claim 101 words
The apparatus for exchanging two stack registers as recited in claim 4, wherein said first plurality of multiplexers are configured to increment said stored shift count if said first decoded instruction is a pop, wherein said first plurality of multiplexers are configured to decrement said stored shift count if said first decoded instruction is a push, wherein said second plurality of multiplexers are configured to increment said stored shift count if said second decoded instruction is a pop, and wherein said second plurality of multiplexers are configured to decrement said stored shift count if said second decoded instruction is a push.
Claim 7
Dependent Claim 29 words
The apparatus for exchanging two stack registers as recited in claim 5, wherein said stored shift count is stored in said plurality of storage locations after every clock cycle.
Claim 8
Dependent Claim 189 words
The apparatus for exchanging two stack registers as recited in claim 2, further comprising: a first rotator configured to rotate the outputs of said plurality of storage locations according to said stored shift count, a first non-stack relative selector configured to receive the rotated outputs from said first rotator, wherein said selector is configured to select one of said rotated outputs according to said first decoded instruction; a second rotator configured to rotate the outputs of said first plurality of multiplexers according to said stored shift count as adjusted by said first plurality of multiplexers; a second non-stack relative selector configured to receive the rotated outputs from said second rotator, wherein said selector is configured to select one of said rotated outputs according to a first instruction; a third rotator configured to rotate the outputs of said second plurality of multiplexers according to said stored shift count as adjusted by said second plurality of multiplexers; and a third non-stack relative selector configured to receive the rotated outputs from said second rotator, wherein said selector is configured to select one of said rotated outputs according to said second decoded instruction.
Claim 9
Dependent Claim 47 words
The apparatus for exchanging two stack registers as recited in claim 1, wherein the number of storage locations equals the number of multiplexers in said first plurality of multiplexers, and wherein the number of storage locations equals the number of multiplexers in said second plurality of multiplexers.
Claim 10
Dependent Claim 46 words
The apparatus for exchanging two stack registers as recited in claim 1, wherein said first plurality of multiplexers are configured to select a particular set of inputs and said second plurality of multiplexers are configured to select a particular set of inputs during each clock cycle.
Claim 11
Independent Claim 88 words
A method of performing push, pop, and exchange operations on a register stack comprising: decoding a first instruction; reading a register map from a plurality of storage locations, wherein said register map comprises a plurality of register pointers; shifting said plurality of register pointers within said register map if said first decoded instruction is a push operation or a pop operation; swapping two pointers within said register map if said first instruction is an exchange instruction; and selecting the pointers that correspond to said first instruction's register operands.
Claim 12
Independent Claim 88 words
A method of performing push, pop, and exchange operations on a register stack comprising: decoding a first instruction; reading a register map from a plurality of storage locations, wherein said register map comprises a plurality of register pointers; shifting said plurality of register pointers within said register map if said first decoded instruction is a push operation or a pop operation; swapping two pointers within said register map if said first instruction is an exchange instruction; and selecting the pointers that correspond to said first instruction's register operands.
Claim 13
Dependent Claim 47 words
The method of performing push, pop, and exchange operations on a register stack as recited in claim 10, further comprising: incrementing a stored shift count if said first decoded instruction is a pop; and decrementing said stored shift count if said first decoded instruction is a push.
Claim 14
Dependent Claim 41 words
The method of performing push, pop, and exchange operations on a register stack as recited in claim 11 further comprising rotating said plurality of register pointers according to a stored shift count if said first decoded instruction utilizes absolute register operands.
Claim 15
Dependent Claim 36 words
The method of performing push, pop, and exchange operations on a register stack as recited in claim 12 further comprising decoding the rotated plurality of register pointers if said first decoded instruction utilizes absolute register operands.
Claim 16
Dependent Claim 224 words
A floating point unit with fast register exchange comprising: a plurality of storage locations configured to store a register map comprising a plurality of register pointers; a stored shift count, configured to indicate the cumulative offset of the register pointers within said register map; a first plurality of multiplexers, wherein each multiplexer in said first plurality of multiplexers is coupled to each of said plurality of storage locations and is configured to select a particular storage location for output according to a first decoded instruction during each clock cycle, wherein each multiplexer in said first plurality of multiplexers is configured to increment said stored shift count if said first decoded instruction is a pop and decrement said stored shift count if said first decoded instruction is a push; and a second plurality of multiplexers, wherein each multiplexer in said second plurality of multiplexers is coupled to the output of each of said first plurality of multiplexers and is configured to select the output of a particular multiplexer within said first plurality of multiplexers for output according to a second decoded instruction during each clock cycle, wherein each multiplexer in said second plurality of multiplexers is configured to increment said stored shift count if said second decoded instruction is a pop and decrement said stored shift count if said second decoded instruction is a push.
Claim 17
Dependent Claim 224 words
A floating point unit with fast register exchange comprising: a plurality of storage locations configured to store a register map comprising a plurality of register pointers; a stored shift count, configured to indicate the cumulative offset of the register pointers within said register map; a first plurality of multiplexers, wherein each multiplexer in said first plurality of multiplexers is coupled to each of said plurality of storage locations and is configured to select a particular storage location for output according to a first decoded instruction during each clock cycle, wherein each multiplexer in said first plurality of multiplexers is configured to increment said stored shift count if said first decoded instruction is a pop and decrement said stored shift count if said first decoded instruction is a push; and a second plurality of multiplexers, wherein each multiplexer in said second plurality of multiplexers is coupled to the output of each of said first plurality of multiplexers and is configured to select the output of a particular multiplexer within said first plurality of multiplexers for output according to a second decoded instruction during each clock cycle, wherein each multiplexer in said second plurality of multiplexers is configured to increment said stored shift count if said second decoded instruction is a pop and decrement said stored shift count if said second decoded instruction is a push.
Claim 18
Dependent Claim 72 words
The floating point unit with fast register exchange as recited in claim 14, wherein said first plurality of multiplexers are configured to swap the position of two register pointers within said register map if said first decoded instruction is an exchange instruction and wherein said second plurality of multiplexers are configured to swap the position of two register pointers within said register map if said second decoded instruction is an exchange instruction.
Claim 19
Dependent Claim 70 words
The floating point unit with fast register exchange as recited in claim 15, further comprising a third plurality of multiplexers configured to rotate the output of said first plurality of multiplexers according to said stored shift count, and a fourth plurality of multiplexers configured to rotate the output of said second plurality of multiplexers according to said stored shift count if said second decoded instruction has non-stack relative register operands.
Claim 20
Dependent Claim 48 words
The floating point unit with fast register exchange as recited in claim 16, further comprising a first selector configured to select a first pointer from the output of said first plurality of multiplexers, wherein said first pointer corresponds to a stack-relative register operand from said first decoded instruction.
Claim 21
Dependent Claim 48 words
The floating point unit with fast register exchange as recited in claim 17, further comprising a second selector configured to select a second pointer from the output of said third plurality of multiplexers, wherein said second pointer corresponds to a non-stack-relative register operand from said first decoded instruction.
Claim 22
Dependent Claim 55 words
The floating point unit with fast register exchange as recited in claim 17, further comprising a plurality of decoders, wherein each of said decoders is coupled to the output of one said third plurality of multiplexers, and a virtual tag generator configured to generate a virtual tag from the output of said plurality of decoders.
Claim 23
Dependent Claim 158 words
A microprocessor comprising: a reorder buffer; and a floating point unit coupled to said reorder buffer, wherein said floating point unit comprises: a plurality of registers configured as a stack, a plurality of storage locations, each configured to store a pointer to one of said registers, a first plurality of multiplexers, wherein each multiplexer in said first plurality of multiplexers is configured to select a particular storage location for output according to a first decoded instruction; and a second plurality of multiplexers, wherein each multiplexer in said second plurality of multiplexers is configured to select one of said outputs according to a second decoded instruction, wherein the contents of said plurality of pointer storage locations define a first order of said register stack, wherein the outputs of said first plurality of multiplexers define a second order of said register stack, and wherein the outputs of said second plurality of multiplexers define a third order of said register stack.
Claim 24
Dependent Claim 158 words
A microprocessor comprising: a reorder buffer; and a floating point unit coupled to said reorder buffer, wherein said floating point unit comprises: a plurality of registers configured as a stack, a plurality of storage locations, each configured to store a pointer to one of said registers, a first plurality of multiplexers, wherein each multiplexer in said first plurality of multiplexers is configured to select a particular storage location for output according to a first decoded instruction; and a second plurality of multiplexers, wherein each multiplexer in said second plurality of multiplexers is configured to select one of said outputs according to a second decoded instruction, wherein the contents of said plurality of pointer storage locations define a first order of said register stack, wherein the outputs of said first plurality of multiplexers define a second order of said register stack, and wherein the outputs of said second plurality of multiplexers define a third order of said register stack.
Claim 25
Dependent Claim 29 words
The microprocessor as recited in claim 20, wherein said plurality of storage locations are configured to receive and store the output from each of said second plurality of multiplexers.
Claim 26
Dependent Claim 27 words
The microprocessor as recited in claim 21, wherein said first and second pluralities of multiplexers are configured to select particular sets of inputs during each clock cycle.
Claim 27
Dependent Claim 48 words
The microprocessor as recited in claim 22, further comprising a stored shift count, wherein said first plurality of multiplexers and said second plurality of multiplexers are configured to adjust said stored shift count to reflect the cumulative effect of any shifts made in the order of said stack.
Claim 28
Dependent Claim 187 words
A computer system comprising: a bus bridge; a first microprocessor coupled to said bus bridge via a CPU bus, wherein said first microprocessor comprises: a reorder buffer; and a floating point unit coupled to said reorder buffer, wherein said floating point unit comprises: a plurality of registers configured as a stack, a plurality of storage locations, each configured to store a pointer to one of said registers, a first plurality of multiplexers, wherein each multiplexer in said first plurality of multiplexers is configured to select a particular storage location for output according to a first decoded instruction, and a second plurality of multiplexers, wherein each multiplexer in said second plurality of multiplexers is configured to select one of said outputs according to a second decoded instruction, wherein the contents of said plurality of pointer storage locations define a first order of said register stack, wherein the outputs of said first plurality of multiplexers define a second order of said register stack, and wherein the outputs of said second plurality of multiplexers define a third order of said register stack; and a modem coupled to said bus bridge.
Claim 29
Dependent Claim 187 words
A computer system comprising: a bus bridge; a first microprocessor coupled to said bus bridge via a CPU bus, wherein said first microprocessor comprises: a reorder buffer; and a floating point unit coupled to said reorder buffer, wherein said floating point unit comprises: a plurality of registers configured as a stack, a plurality of storage locations, each configured to store a pointer to one of said registers, a first plurality of multiplexers, wherein each multiplexer in said first plurality of multiplexers is configured to select a particular storage location for output according to a first decoded instruction, and a second plurality of multiplexers, wherein each multiplexer in said second plurality of multiplexers is configured to select one of said outputs according to a second decoded instruction, wherein the contents of said plurality of pointer storage locations define a first order of said register stack, wherein the outputs of said first plurality of multiplexers define a second order of said register stack, and wherein the outputs of said second plurality of multiplexers define a third order of said register stack; and a modem coupled to said bus bridge.
Claim 30
Dependent Claim 30 words
The computer system as recited in claim 24, wherein said plurality of storage locations are configured to receive and store the output from each of said second plurality of multiplexers.
Claim 31
Dependent Claim 20 words
The computer system recited in claim 25, comprising a second microprocessor coupled to said first microprocessor via said CPU bus.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-08-29 2004-02-28 2004-08-29 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-08-29 2008-02-28 2008-08-29 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-08-29 2012-02-28 2012-08-29 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag