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

System and method for handling load and/or store operations in a superscalar microprocessor

Assignee: Seiko Epson Corp
•
Filing: 1994-09-16
•
Granted: 1997-08-19
•
Expires: 2014-09-16
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The present invention provides a system and method for managing load and store operations necessary for reading from and writing to memory or I/O in a superscalar RISC architecture environment. To perform this task, a load store unit is provided whose main purpose is to make load requests out of order whenever possible to get the load data back for use by an instruction execution unit as quickly as possible. A load operation can only be performed out of order if there are no address collisions and no write pendings. An address collision occurs when a read is requested at a memory location where an older instruction will be writing. Write pending refers to the case where an older instruction requests a store operation, but the store address has not yet been calculated. The data cache unit returns 8 bytes of unaligned data. The load/store unit aligns this data properly before it is returned to the instruction execution unit. Thus, the three main tasks of the load store unit are: (1) handling out of order cache requests; (2) detecting address collisions; and (3) alignment of data;

Inventors

  • 👤 Cheryl D. Senter
  • 👤 Johannes Wang

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-28 19:53
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/38; G06F9/3824; G06F9/3826; A; A61; A61K; A61K47/00; A61K47/30; A61K47/32; G06F9/30003; G06F9/3004; G06F9/30043; G06F9/30076; G06F9/30087; G06F9/30145; G06F9/3016; G06F9/30167; G06F9/3802; G06F9/3816; G06F9/3834; G06F9/3836; G06F9/3853

Claims Analysis

Total Claims: 41
Claim 1
Independent Claim 236 words
A microprocessor system for executing a program stream, said microprocessor system comprising: (a) an instruction fetch unit for fetching instructions from an instruction store and for providing a predetermined plurality of said instructions to an instruction buffer; (b) an execution unit, coupled to said instruction fetch unit, for executing said plurality of said instructions from said instruction buffer in an out-of-order fashion, said execution unit including a load store unit adapted to make load requests to a memory system out-of-order with respect to all instructions in said instruction buffer and store requests in-order with respect to all instructions in said instruction store, said load store unit having, (i) an address path adapted to manage a plurality of addresses associated with said plurality of said instructions and to provide addresses to said memory system, (ii) address collision means, coupled to said address path, for detecting and signaling whether address collisions and write pendings exist between each of said plurality of said instructions, wherein said load store unit performs said load requests if no address collisions and no write pendings are detected, and (ii) a data path for transferring load and/or store data to and from said memory system and said execution unit, said data path configured to align data returned from said memory system to thereby permit data falling on a word boundary to be returned from said memory system to said execution unit in correct alignment.
Claim 2
Dependent Claim 236 words
A microprocessor system for executing a program stream, said microprocessor system comprising: (a) an instruction fetch unit for fetching instructions from an instruction store and for providing a predetermined plurality of said instructions to an instruction buffer; (b) an execution unit, coupled to said instruction fetch unit, for executing said plurality of said instructions from said instruction buffer in an out-of-order fashion, said execution unit including a load store unit adapted to make load requests to a memory system out-of-order with respect to all instructions in said instruction buffer and store requests in-order with respect to all instructions in said instruction store, said load store unit having, (i) an address path adapted to manage a plurality of addresses associated with said plurality of said instructions and to provide addresses to said memory system, (ii) address collision means, coupled to said address path, for detecting and signaling whether address collisions and write pendings exist between each of said plurality of said instructions, wherein said load store unit performs said load requests if no address collisions and no write pendings are detected, and (ii) a data path for transferring load and/or store data to and from said memory system and said execution unit, said data path configured to align data returned from said memory system to thereby permit data falling on a word boundary to be returned from said memory system to said execution unit in correct alignment.
Claim 3
Dependent Claim 32 words
The system of claim 1, wherein said address path includes a plurality of address buffers for storing a high order and a low order byte of said load and/or said store request.
Claim 4
Dependent Claim 28 words
The system of claim 1, wherein said load store unit further includes means for making multiple memory requests to memory if said data falls on a word boundary.
Claim 5
Dependent Claim 27 words
The system of claim 1, further comprising a data address functional unit, connected to said load store unit, adapted for calculating addresses for said plurality of instructions.
Claim 6
Dependent Claim 31 words
The system of claim 4, a virtual memory unit adapted to provide physical address translations, which are generated from a virtual address, to said execution unit and said load store unit.
Claim 7
Dependent Claim 33 words
The system of claim 5, wherein said load store unit must have a physical address from said data address function unit and said virtual memory unit before it can make a memory request.
Claim 8
Dependent Claim 29 words
The system of claim 1, wherein said instructions are CISC instructions, and wherein said instruction execution unit further comprises decode means for decoding said CISC instructions into RISC instructions.
Claim 9
Dependent Claim 26 words
The system of claim 1, wherein said load store unit further comprises means for merging data received from memory with original contents of a destination register.
Claim 10
Dependent Claim 40 words
The system of claim 1, further comprising data lines between said execution unit and said load/store data path for directly transferring load and/or execute data to said data path thereby allowing a subsequent store operation to be performed promptly thereafter.
Claim 11
Dependent Claim 21 words
The system of claim 1, further comprising an historical pointer for indicating relative age of an instruction in said instruction buffer.
Claim 12
Dependent Claim 26 words
The system of claim 1, wherein said collision means indicates a load dependency by determining if there is an address collisions or a pending store address.
Claim 13
Dependent Claim 25 words
The system of claim 1, further comprising means for preventing load bypassing of load instructions that will modify the state of the microprocessor system incorrectly.
Claim 14
Dependent Claim 28 words
The system of claim 1, further comprising means for snooping the results of a function unit in order to provide store data directly to said load/store data path.
Claim 15
Dependent Claim 20 words
The system of claim 1, wherein said load store unit has a separate load/store data path for floating point operations.
Claim 16
Dependent Claim 26 words
The system of claim 1, wherein said execution unit includes a register file which contains a plurality of real registers and a plurality of temporary registers.
Claim 17
Dependent Claim 41 words
The method of claim 1, wherein said instruction buffer comprise a plurality of buckets, each of said buckets contains either a load and a store to the same address, a load only, a store only, or no load and no store.
Claim 18
Dependent Claim 19 words
The system of claim 1, wherein said load store unit gives said store requests priority over said load requests.
Claim 19
Dependent Claim 15 words
The system of claim 1, further comprising means for preventing load bypassing of noncacheable loads.
Claim 20
Dependent Claim 209 words
In a RISC superscalar microprocessor having an execution unit adapted to execute a stream of instructions and to issue load instructions out-of-order, a method for managing requests for loads and stores to and from a memory device, the method comprising the steps of: (1) calculating an address for an instruction selected from an instruction window and transferring said address to a load store unit; (2) determining whether said instruction involves a load operation, a store operation, an execute operation, or a combination of said load operation and/or said store operation and/or said execute operation; (3) checking, if said instruction has a load operation, for an address collision and for any write pendings, and signaling the outcome of said check; (4) making a request to said memory device based on a priority scheme and the results of said checking step (3), wherein said priority scheme includes making load requests to said memory device out-of-order with respect to instructions in said instruction window and store requests in-order with respect to all instructions in the stream of instructions; (5) receiving requested data from said load operation and/or said store operation in a data path portion of said load store unit; and (6) aligning said requested data if said requested data is unaligned.
Claim 21
Dependent Claim 209 words
In a RISC superscalar microprocessor having an execution unit adapted to execute a stream of instructions and to issue load instructions out-of-order, a method for managing requests for loads and stores to and from a memory device, the method comprising the steps of: (1) calculating an address for an instruction selected from an instruction window and transferring said address to a load store unit; (2) determining whether said instruction involves a load operation, a store operation, an execute operation, or a combination of said load operation and/or said store operation and/or said execute operation; (3) checking, if said instruction has a load operation, for an address collision and for any write pendings, and signaling the outcome of said check; (4) making a request to said memory device based on a priority scheme and the results of said checking step (3), wherein said priority scheme includes making load requests to said memory device out-of-order with respect to instructions in said instruction window and store requests in-order with respect to all instructions in the stream of instructions; (5) receiving requested data from said load operation and/or said store operation in a data path portion of said load store unit; and (6) aligning said requested data if said requested data is unaligned.
Claim 22
Dependent Claim 22 words
The method of claim 19, wherein step (1) of issuing includes a step of performing a data dependency check on said instruction.
Claim 23
Dependent Claim 24 words
The method of claim 19, further comprising a step of writing the results of said instruction into a preassigned location in a temporary buffer.
Claim 24
Dependent Claim 22 words
The method of claim 21, further comprising a step of providing data to said load store unit by bypassing said temporary buffer.
Claim 25
Dependent Claim 26 words
The method of claim 19, further comprising a step of preventing load bypassing of load operations that will modify the state of the microprocessor system incorrectly.
Claim 26
Dependent Claim 22 words
The method of claim 19, further comprising a step of merging data received from memory with data stored in a destination register.
Claim 27
Dependent Claim 37 words
The method of claim 19, wherein said step of checking includes the step of comparing the first address of said load operation against the first and last address for each older store operation in said instruction window.
Claim 28
Dependent Claim 252 words
A computer system, comprising: (a) a memory system that is configured to store instructions and data; (b) a processor, connected to said memory system, for executing said instructions, said processor having, (1) an instruction fetch unit for fetching said instructions from said memory system and for providing a predetermined plurality of said instructions to an instruction window; (2) an execution unit, coupled to said instruction fetch unit, for executing said instructions from said instruction window in an out-of-order fashion, said execution unit including a load store unit adapted to make load requests to said memory system out-of order with respect to all of said instructions in said instruction window and store requests in-order with respect to all of said instructions in said instruction window, said load store unit having, (A) an address path adapted to manage a plurality of addresses associated with said instructions and to provide addresses to said memory system, (B) address collision means, coupled to said address path, for detecting and signaling whether address collisions and write pendings exist between each of said instructions, wherein said load store unit performs said load requests if no address collisions and no write pendings are detected, and (C) a data path for transferring load and/or store data to and from said memory system and said execution unit, said data path configured to align data returned from said memory system to thereby permit data falling on a word boundary to be returned from said memory system to said execution unit in correct alignment.
Claim 29
Dependent Claim 252 words
A computer system, comprising: (a) a memory system that is configured to store instructions and data; (b) a processor, connected to said memory system, for executing said instructions, said processor having, (1) an instruction fetch unit for fetching said instructions from said memory system and for providing a predetermined plurality of said instructions to an instruction window; (2) an execution unit, coupled to said instruction fetch unit, for executing said instructions from said instruction window in an out-of-order fashion, said execution unit including a load store unit adapted to make load requests to said memory system out-of order with respect to all of said instructions in said instruction window and store requests in-order with respect to all of said instructions in said instruction window, said load store unit having, (A) an address path adapted to manage a plurality of addresses associated with said instructions and to provide addresses to said memory system, (B) address collision means, coupled to said address path, for detecting and signaling whether address collisions and write pendings exist between each of said instructions, wherein said load store unit performs said load requests if no address collisions and no write pendings are detected, and (C) a data path for transferring load and/or store data to and from said memory system and said execution unit, said data path configured to align data returned from said memory system to thereby permit data falling on a word boundary to be returned from said memory system to said execution unit in correct alignment.
Claim 30
Dependent Claim 52 words
The computer system of claim 26, wherein said memory system includes a first level memory connected to said processor, a second level memory, and a memory control unit connected between said first level memory and said second level memory, wherein said first level memory holds the most recently accessed instructions and data.
Claim 31
Dependent Claim 27 words
The computer system of claim 27, further comprising a second processor connected to said second level memory, wherein said second processor is configured to execute instructions out-of-order.
Claim 32
Dependent Claim 19 words
The computer system of claim 27, wherein said first level memory includes an instruction portion and a data portion.
Claim 33
Dependent Claim 17 words
The computer system of claim 27, further comprising an input/output subsystem, connected to said memory control unit.
Claim 34
Dependent Claim 24 words
The computer system of claim 26, further comprising a superscalar control means for determining when an instruction can be issued to said instruction window.
Claim 35
Dependent Claim 61 words
The computer system of claim 26, wherein said execution unit further comprises: a register file; a plurality of functional units; a first bus, connected to the inputs of said plurality of functional units and further connected to said register file; and a second bus connected to the outputs of said plurality of functional units and further connected to said register file.
Claim 36
Dependent Claim 20 words
The computer system of claim 32, wherein said second bus is further connected to transfer data to said first bus.
Claim 37
Dependent Claim 25 words
The computer system of claim 33, wherein said second bus is further connected to transfer data to said data path of said load store unit.
Claim 38
Dependent Claim 50 words
The computer system of claim 26, wherein said register file includes a set of real registers and a set of temporary registers, wherein one of said instructions is retired when data resulting from execution of said one of said instructions is moved from said temporary registers to said real registers.
Claim 39
Dependent Claim 30 words
The computer system of claim 26, wherein data from a load and or store instruction is stored in said register file from said second bus before data from other instructions.
Claim 40
Dependent Claim 19 words
The computer system of claim 26, further comprising an instruction decode unit that decodes CISC instructions into RISC instructions.
Claim 41
Dependent Claim 38 words
The computer system of claim 26, wherein said address path includes a first register for storing a first byte associated with a memory access and a second register for storing a last byte associated with said memory access.

USPTO Annuity & Maintenance Windows

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

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag