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

Superscalar RISC instruction scheduling

Assignee: Seiko Corp
•
Filing: 1997-12-15
•
Granted: 1999-10-26
•
Expires: 2017-12-15
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A register renaming system for out-of-order execution of a set of reduced instruction set computer instructions having addressable source and destination register fields, adapted for use in a computer having an instruction execution unit with a register file accessed by read address ports and for storing instruction operands. A data dependance check circuit is included for determining data dependencies between the instructions. A tag assignment circuit generates one of more tags to specify the location of operands, based on the data dependencies determined by the data dependance check circuit. A set of register file port multiplexers select the tags generated by the tag assignment circuit and pass the tags onto the read address ports of the register file for storing execution results.

Inventors

  • 👤 Sanjiv Garg
  • 👤 Kevin Ray Iadonato
  • 👤 Le Trong Nguyen
  • 👤 Johannes Wang

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-09 07:23
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/30098; G06F9/3012; G06F9/3013; G06F9/38; G06F9/3824; G06F9/3836; G06F9/3838; G06F9/384; G06F9/3854; G06F9/3856

Claims Analysis

Total Claims: 40
Claim 1
Independent Claim 179 words
In a computer system having a register file comprising a plurality of registers and a plurality of index-addressable temporary storage locations, a method for executing instructions having a prescribed program order, comprising the steps of: (1) storing a plurality of instructions in an instruction buffer, wherein each instruction has an input and an output; (2) assigning a unique one of the plurality of index-addressable temporary storage locations to each one of said plurality of instructions in said instruction buffer, wherein an output corresponding to a given one of said plurality of instructions is stored in said index-addressable temporary storage location assigned to said given one of said plurality of instructions; (3) determining whether one of said plurality of instructions in said instruction buffer is a dependent instruction, wherein said dependent instruction has an input that is an output of a previous instruction, wherein said previous instruction is an instruction in said instruction buffer that precedes said dependent instruction in the prescribed program order; and (4) associating said index-addressable temporary storage location assigned to said previous instruction with said input.
Claim 2
Dependent Claim 179 words
In a computer system having a register file comprising a plurality of registers and a plurality of index-addressable temporary storage locations, a method for executing instructions having a prescribed program order, comprising the steps of: (1) storing a plurality of instructions in an instruction buffer, wherein each instruction has an input and an output; (2) assigning a unique one of the plurality of index-addressable temporary storage locations to each one of said plurality of instructions in said instruction buffer, wherein an output corresponding to a given one of said plurality of instructions is stored in said index-addressable temporary storage location assigned to said given one of said plurality of instructions; (3) determining whether one of said plurality of instructions in said instruction buffer is a dependent instruction, wherein said dependent instruction has an input that is an output of a previous instruction, wherein said previous instruction is an instruction in said instruction buffer that precedes said dependent instruction in the prescribed program order; and (4) associating said index-addressable temporary storage location assigned to said previous instruction with said input.
Claim 3
Dependent Claim 66 words
The method of claim 1, further comprising the steps of: (5) executing said dependent instruction only after said previous instruction produces an output; (6) storing said output in said index-addressable temporary storage location assigned to said previous instruction; and (7) performing an operation corresponding to said dependent instruction using said output stored in said index-addressable temporary storage location assigned to said previous instruction as said input.
Claim 4
Dependent Claim 28 words
The method of claim 1, further comprising the step of associating a done signal with said input, wherein said done signal indicates a status of said previous instruction.
Claim 5
Dependent Claim 23 words
The method of claim 1, further comprising the step of storing said output in an appropriate register when said previous instruction is retired.
Claim 6
Dependent Claim 168 words
A superscalar processor for executing instructions having a prescribed program order, comprising: an instruction buffer for storing a plurality of instructions; an index-addressable temporary buffer comprising a plurality of temporary storage locations, wherein each one of said plurality of instructions is assigned to a unique one of said plurality of temporary storage locations, wherein an output corresponding to a given one of said plurality of instructions is stored in said temporary storage location assigned to said given one of said plurality of instructions; a data dependency checker to locate a dependent instruction stored in said instruction buffer, wherein said dependent instruction has an input that is dependent on a previous instruction, wherein said previous instruction is an instruction in said instruction buffer that precedes said dependent instruction in the prescribed program order; and a circuit that receives from said data dependency checker dependency data corresponding to said dependent instruction and uses said dependency data to associate said temporary storage location assigned to said previous instruction with said input.
Claim 7
Dependent Claim 168 words
A superscalar processor for executing instructions having a prescribed program order, comprising: an instruction buffer for storing a plurality of instructions; an index-addressable temporary buffer comprising a plurality of temporary storage locations, wherein each one of said plurality of instructions is assigned to a unique one of said plurality of temporary storage locations, wherein an output corresponding to a given one of said plurality of instructions is stored in said temporary storage location assigned to said given one of said plurality of instructions; a data dependency checker to locate a dependent instruction stored in said instruction buffer, wherein said dependent instruction has an input that is dependent on a previous instruction, wherein said previous instruction is an instruction in said instruction buffer that precedes said dependent instruction in the prescribed program order; and a circuit that receives from said data dependency checker dependency data corresponding to said dependent instruction and uses said dependency data to associate said temporary storage location assigned to said previous instruction with said input.
Claim 8
Dependent Claim 37 words
The superscalar processor of claim 5, wherein said circuit associates said temporary storage location assigned to said previous instruction with said input by outputting a reference corresponding to said temporary storage location assigned to said previous instruction.
Claim 9
Dependent Claim 12 words
The superscalar processor of claim 6, wherein said reference comprises an address.
Claim 10
Dependent Claim 36 words
The superscalar process of claim 7, wherein said reference further comprises a 1-bit identifier that indicates whether said address is an address of one of said temporary storage locations or is an address of a register.
Claim 11
Dependent Claim 22 words
The superscalar processor of claim 7, wherein said circuit further outputs a first signal indicating a completion status of said previous instruction.
Claim 12
Dependent Claim 84 words
The superscalar processor of claim 9, further comprising: a multiplexer having a plurality of inputs, wherein said multiplexer receives an address of a storage location at each one of said plurality of inputs, wherein one of said addresses received at one of said plurality of inputs is said address included in said reference outputted by said circuit; and an issuer that receives as an input said signal indicating a completion status of said previous instruction and that outputs a select signal to said multiplexer.
Claim 13
Dependent Claim 38 words
The superscalar processor of claim 5, wherein said circuit comprises a priority encoder and a multiplexer, wherein said encoder receives said dependency data, and an output of said encoder is used as a select signal for said multiplexer.
Claim 14
Dependent Claim 48 words
The superscalar processor of claim 11, wherein said multiplexer receives a plurality of references as inputs and outputs a reference corresponding to said output of said encoder, and wherein said reference outputted by said multiplexer represents an address of said temporary storage location assigned to said previous instruction.
Claim 15
Dependent Claim 39 words
The superscalar processor of claim 5, wherein said instruction buffer is capable of storing at most X number of instructions, and said temporary buffer includes at least X number of temporary storage locations, wherein X is a positive integer.
Claim 16
Dependent Claim 41 words
The superscalar processor of claim 5, wherein one of said plurality of instructions is assigned to a unique one of said plurality of storage locations based on a position of said one of said plurality of instructions within said instruction buffer.
Claim 17
Dependent Claim 57 words
The superscalar processor of claim 5, wherein said data dependency checker locates a dependent instruction stored in said instruction buffer by comparing a source register of one of said plurality of instructions to a destination register of each instruction in said instruction buffer that precedes said one of said plurality of instructions in the prescribed program order.
Claim 18
Dependent Claim 43 words
The superscalar processor of claim 15, wherein said data dependency checker comprises a plurality of data dependency circuits, wherein each dependency circuit performs at least on comparison to determine whether any given one of said plurality of instructions depends on a previous instruction.
Claim 19
Dependent Claim 99 words
The superscalar processor of claim 16, wherein one of said data dependency circuits comprises at least one comparator circuit, said comparator circuit receiving a first input and a second input and outputting a dependency signal, said first input corresponding to a source register of a first instruction stored in said instruction buffer and said second input corresponding to a destination register of a second instruction stored in said instruction buffer, wherein said second instruction precedes said first instruction in the prescribed program order, and wherein said dependency signal indicates whether said first instruction is dependent on said second instruction.
Claim 20
Dependent Claim 85 words
The superscalar processor of claim 17, wherein said comparator circuit comprises a plurality of exclusive NOR gates (XNOR) and an AND gate having a plurality of inputs, wherein an output of each XNOR gate is tied to an input of said AND gate, and wherein each XNOR has a first XNOR input and a second XNOR input, wherein each first XNOR input is tied to a bit of said first input and each second XNOR input is tied to a bit of said second input.
Claim 21
Dependent Claim 200 words
A computer system, comprising: a memory unit for storing program instructions having a prescribed program order; a bus for retrieving said program instructions from said memory unit; and a processor in communication with said bus for executing said program instructions, wherein said processor comprises: an instruction buffer for storing a plurality of instructions; an index-addressable temporary buffer comprising a plurality of temporary storage locations, wherein each one of said plurality of instructions is assigned to a unique one of said plurality of temporary storage locations, wherein an output corresponding to a given one of said plurality of instructions is stored in said temporary storage location assigned to said given one of said plurality of instructions; a data dependency checker to locate a dependent instruction stored in said instruction buffer, wherein said dependent instruction has an input that is dependent on a previous instruction, wherein said previous instruction is an instruction in said instruction buffer that precedes said dependent instruction in the prescribed program order; and a circuit that receives from said data dependency checker dependency data corresponding to said dependent instruction and uses said dependency data to associate said temporary storage location assigned to said previous instruction with said input.
Claim 22
Dependent Claim 200 words
A computer system, comprising: a memory unit for storing program instructions having a prescribed program order; a bus for retrieving said program instructions from said memory unit; and a processor in communication with said bus for executing said program instructions, wherein said processor comprises: an instruction buffer for storing a plurality of instructions; an index-addressable temporary buffer comprising a plurality of temporary storage locations, wherein each one of said plurality of instructions is assigned to a unique one of said plurality of temporary storage locations, wherein an output corresponding to a given one of said plurality of instructions is stored in said temporary storage location assigned to said given one of said plurality of instructions; a data dependency checker to locate a dependent instruction stored in said instruction buffer, wherein said dependent instruction has an input that is dependent on a previous instruction, wherein said previous instruction is an instruction in said instruction buffer that precedes said dependent instruction in the prescribed program order; and a circuit that receives from said data dependency checker dependency data corresponding to said dependent instruction and uses said dependency data to associate said temporary storage location assigned to said previous instruction with said input.
Claim 23
Dependent Claim 36 words
The computer system of claim 19, wherein said circuit associates said temporary storage location assigned to said previous instruction with said input by outputting an address of said temporary storage location assigned to said previous instruction.
Claim 24
Dependent Claim 22 words
The computer system of claim 20, wherein said circuit further outputs a first signal indicating a completion status of said previous instruction.
Claim 25
Dependent Claim 81 words
The computer system of claim 21, further comprising: a multiplexer having a first plurality of inputs, wherein said multiplexer receives an address of a storage location at each one of said plurality of inputs, wherein one of said addresses received at one of said plurality of inputs is said address outputted by said circuit; and an issuer that receives as an input said signal indicating a completion status of said previous instruction, and that outputs a select signal to said multiplexer.
Claim 26
Dependent Claim 38 words
The computer system of claim 19, wherein said circuit comprises a priority encoder and a multiplexer, wherein said encoder receives said dependency data, and an output of said encoder is used as a select signal for said multiplexer.
Claim 27
Dependent Claim 16 words
The computer system of claim 23, wherein said output of said encoder represents said previous instruction.
Claim 28
Dependent Claim 47 words
The computer system of claim 24, wherein said multiplexer receives a plurality of references as inputs and outputs a reference corresponding to said output of said encoder, wherein said reference outputted by said multiplexer represents an address of said temporary storage location assigned to said previous instruction.
Claim 29
Dependent Claim 39 words
The computer system of claim 19, wherein said instruction buffer is capable of storing at most X number of instructions, and said temporary buffer includes at least X number of temporary storage locations, wherein X is a positive integer.
Claim 30
Dependent Claim 45 words
The computer system of claim 19, wherein one of said plurality of said program instructions is assigned to a unique one of said plurality of storage locations based on a position of said one of said plurality of said program instructions within said instruction buffer.
Claim 31
Dependent Claim 61 words
The computer system of claim 19, wherein said data dependency checker locates a dependent instruction stored in said instruction buffer by comparing a source register of one of said plurality of said program instructions to a destination register of each instruction in said instruction buffer that precedes said one of said plurality of said program instructions in the prescribed program order.
Claim 32
Dependent Claim 45 words
The computer system of claim 28, wherein said data dependency checker comprises a plurality of data dependency circuits, wherein each dependency circuit performs at least on comparison to determine whether any given one of said plurality of said program instructions depends on a previous instruction.
Claim 33
Dependent Claim 99 words
The computer system of claim 29, wherein one of said data dependency circuits comprises at least one comparator circuit, said comparator circuit receiving a first input and a second input and outputting a dependency signal, said first input corresponding to a source register of a first instruction stored in said instruction buffer and said second input corresponding to a destination register of a second instruction stored in said instruction buffer, wherein said second instruction precedes said first instruction in the prescribed program order, and wherein said dependency signal indicates whether said first instruction is dependent on said second instruction.
Claim 34
Dependent Claim 85 words
The computer system of claim 30, wherein said comparator circuit comprises a plurality of exclusive NOR gates (XNOR) and an AND gate having a plurality of inputs, wherein an output of each XNOR gate is tied to an input of said AND gate, and wherein each XNOR has a first XNOR input and a second XNOR input, wherein each first XNOR input is tied to a bit of said first input and each second XNOR input is tied to a bit of said second input.
Claim 35
Dependent Claim 229 words
A superscalar processor for executing instructions having a prescribed program order, comprising: an instruction buffer storing a plurality of instructions; a register file having a plurality of registers and a plurality of index-addressable temporary storage locations, wherein each one of said plurality of instructions is assigned to a unique one of said plurality of temporary storage locations and one of said plurality of registers, wherein an output corresponding to a given one of said plurality of instructions is stored in said temporary storage location assigned to said given one of said plurality of instructions; a data dependency checker to locate dependent instructions stored in said instruction buffer, wherein a dependent instruction is an instruction that should not be executed until after a particular previous instruction within said instruction buffer is executed, wherein said data dependency checker outputs dependency information corresponding to each instruction stored in said instruction buffer; a plurality of circuits, wherein each of said plurality of circuits corresponds to an instruction in said instruction buffer and receives dependency data from said data dependency checker, wherein said dependency data received at a particular circuit corresponds to said instruction to which said particular circuit corresponds, and wherein a circuit corresponding to a given dependent instruction outputs a reference representing said temporary storage location assigned to a particular previous instruction that must be executed prior to said given dependent instruction.
Claim 36
Dependent Claim 229 words
A superscalar processor for executing instructions having a prescribed program order, comprising: an instruction buffer storing a plurality of instructions; a register file having a plurality of registers and a plurality of index-addressable temporary storage locations, wherein each one of said plurality of instructions is assigned to a unique one of said plurality of temporary storage locations and one of said plurality of registers, wherein an output corresponding to a given one of said plurality of instructions is stored in said temporary storage location assigned to said given one of said plurality of instructions; a data dependency checker to locate dependent instructions stored in said instruction buffer, wherein a dependent instruction is an instruction that should not be executed until after a particular previous instruction within said instruction buffer is executed, wherein said data dependency checker outputs dependency information corresponding to each instruction stored in said instruction buffer; a plurality of circuits, wherein each of said plurality of circuits corresponds to an instruction in said instruction buffer and receives dependency data from said data dependency checker, wherein said dependency data received at a particular circuit corresponds to said instruction to which said particular circuit corresponds, and wherein a circuit corresponding to a given dependent instruction outputs a reference representing said temporary storage location assigned to a particular previous instruction that must be executed prior to said given dependent instruction.
Claim 37
Dependent Claim 262 words
A computer system, comprising: a memory unit for storing program instructions having a prescribed program order; a bus for retrieving said program instructions from said memory unit; and a processor in communication with said bus for executing said program instructions, wherein said processor comprises: an instruction buffer storing a plurality of instructions; a register file having a plurality of registers and a plurality of index-addressable temporary storage locations, wherein each one of said plurality of instructions is assigned to a unique one of said plurality of temporary storage locations and one of said plurality of registers, wherein an output corresponding to a given one of said plurality of instructions is stored in said temporary storage location assigned to said given one of said plurality of instructions; a data dependency checker to locate dependent instructions stored in said instruction buffer, wherein a dependent instruction is an instruction that should not be executed until after a particular previous instruction within said instruction buffer is executed, wherein said data dependency checker outputs dependency information corresponding to each instruction stored in said instruction buffer; and a plurality of circuits, wherein each of said plurality of circuits corresponds to an instruction in said instruction buffer and receives dependency data from said data dependency checker, wherein said dependency data received at a particular circuit corresponds to said instruction to which said particular circuit corresponds, and wherein a circuit corresponding to a given dependent instruction outputs a reference representing said temporary storage location assigned to a particular previous instruction that must be executed prior to said given dependent instruction.
Claim 38
Dependent Claim 262 words
A computer system, comprising: a memory unit for storing program instructions having a prescribed program order; a bus for retrieving said program instructions from said memory unit; and a processor in communication with said bus for executing said program instructions, wherein said processor comprises: an instruction buffer storing a plurality of instructions; a register file having a plurality of registers and a plurality of index-addressable temporary storage locations, wherein each one of said plurality of instructions is assigned to a unique one of said plurality of temporary storage locations and one of said plurality of registers, wherein an output corresponding to a given one of said plurality of instructions is stored in said temporary storage location assigned to said given one of said plurality of instructions; a data dependency checker to locate dependent instructions stored in said instruction buffer, wherein a dependent instruction is an instruction that should not be executed until after a particular previous instruction within said instruction buffer is executed, wherein said data dependency checker outputs dependency information corresponding to each instruction stored in said instruction buffer; and a plurality of circuits, wherein each of said plurality of circuits corresponds to an instruction in said instruction buffer and receives dependency data from said data dependency checker, wherein said dependency data received at a particular circuit corresponds to said instruction to which said particular circuit corresponds, and wherein a circuit corresponding to a given dependent instruction outputs a reference representing said temporary storage location assigned to a particular previous instruction that must be executed prior to said given dependent instruction.
Claim 39
Dependent Claim 171 words
In a computer system having a register file comprising a plurality of registers and a plurality of index-addressable temporary storage locations, a method for executing instructions having an input and an output and having a prescribed program order, comprising the steps of: (1) assigning a unique one of the plurality of index-addressable temporary storage locations to each one of a plurality of instructions in an instruction buffer, wherein the output corresponding to a given one of said plurality of instructions is stored in said temporary storage location assigned to said given one of said plurality of instructions; (2) determining whether one of said plurality of instructions in said instruction buffer is a dependent instruction, wherein said dependent instruction has an input that is dependent on a previous instruction, wherein said previous instruction is an instruction in said instruction buffer that precedes said dependent instruction in the prescribed program order; and (3) associating said temporary storage location assigned to said previous instruction with the input that is dependent on said previous instruction.
Claim 40
Dependent Claim 171 words
In a computer system having a register file comprising a plurality of registers and a plurality of index-addressable temporary storage locations, a method for executing instructions having an input and an output and having a prescribed program order, comprising the steps of: (1) assigning a unique one of the plurality of index-addressable temporary storage locations to each one of a plurality of instructions in an instruction buffer, wherein the output corresponding to a given one of said plurality of instructions is stored in said temporary storage location assigned to said given one of said plurality of instructions; (2) determining whether one of said plurality of instructions in said instruction buffer is a dependent instruction, wherein said dependent instruction has an input that is dependent on a previous instruction, wherein said previous instruction is an instruction in said instruction buffer that precedes said dependent instruction in the prescribed program order; and (3) associating said temporary storage location assigned to said previous instruction with the input that is dependent on said previous instruction.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2002-10-25 2003-04-26 2003-10-26 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2006-10-25 2007-04-26 2007-10-26 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2010-10-25 2011-04-26 2011-10-26 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag