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

Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations

Assignee: Advanced Micro Devices Inc
•
Filing: 1997-11-12
•
Granted: 1998-11-03
•
Expires: 2017-11-12
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A load/store buffer is provided which allows both load memory operations and store memory operations to be stored within it. Because each storage location may contain either a load or a store memory operation, the number of available storage locations for load memory operations is maximally the number of storage locations in the entire buffer. Similarly, the number of available storage locations for store memory operations is maximally the number of storage locations in the entire buffer. This invention improves use of silicon area for load and store buffers by implementing, in a smaller area, a performance-equivalent alternative to the separate load and store buffer approach previously used in many superscalar microprocessors.

Inventors

  • 👤 H. S. Ramagopal
  • 👤 Thang M. Tran
  • 👤 James K. Pickett

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-30 13:37
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/30003; G06F9/30076; G06F9/30087; G06F9/3004; G06F9/30047; G06F9/3005; G06F9/30145; G06F9/30149; G06F9/30152; G06F9/32; G06F9/322; G06F9/323; G06F9/38; G06F9/3802; G06F9/3804; G06F9/3806; G06F9/3816; G06F9/3818; G06F9/382; G06F9/3824; G06F9/3826; G06F9/383; G06F9/3832; G06F9/3834; G06F9/3836; G06F9/3838; G06F9/3842; G06F9/3848; G06F9/3854; G06F9/3856

Claims Analysis

Total Claims: 32
Claim 1
Independent Claim 266 words
A load/store unit for a superscalar microprocessor comprising: a buffer including a plurality of storage locations configured to store information regarding pending memory operations wherein said buffer further includes an input port configured to receive said information, and wherein said buffer further includes a data cache port configured to communicate data access commands to a data cache, and wherein said plurality of storage locations are configured such that a load memory operation may be stored in one of said plurality of storage locations in a given clock cycle and a store memory operation may be stored in said one of said plurality of storage location in a different clock cycle; an input control unit coupled to said buffer, wherein said input control unit is configured to direct the transfer of said information from said input port to a particular storage location within said buffer, wherein said input control unit includes a load pointer configured to selectively direct the storage of load memory operations into various ones of said plurality of storage locations and a store pointer configured to selectively direct the storage of store memory operations into additional ones of said plurality of storage locations, wherein said load pointer and said store pointer are configured to point to different storage locations simultaneously; and an output control unit coupled to said buffer, wherein said output control unit is configured to select a memory operation stored within said plurality of storage locations within said buffer, and wherein said output control unit is further configured to direct a data access command associated with said operation to said data cache.
Claim 2
Dependent Claim 266 words
A load/store unit for a superscalar microprocessor comprising: a buffer including a plurality of storage locations configured to store information regarding pending memory operations wherein said buffer further includes an input port configured to receive said information, and wherein said buffer further includes a data cache port configured to communicate data access commands to a data cache, and wherein said plurality of storage locations are configured such that a load memory operation may be stored in one of said plurality of storage locations in a given clock cycle and a store memory operation may be stored in said one of said plurality of storage location in a different clock cycle; an input control unit coupled to said buffer, wherein said input control unit is configured to direct the transfer of said information from said input port to a particular storage location within said buffer, wherein said input control unit includes a load pointer configured to selectively direct the storage of load memory operations into various ones of said plurality of storage locations and a store pointer configured to selectively direct the storage of store memory operations into additional ones of said plurality of storage locations, wherein said load pointer and said store pointer are configured to point to different storage locations simultaneously; and an output control unit coupled to said buffer, wherein said output control unit is configured to select a memory operation stored within said plurality of storage locations within said buffer, and wherein said output control unit is further configured to direct a data access command associated with said operation to said data cache.
Claim 3
Dependent Claim 23 words
The load/store unit as recited in claim 1 wherein said buffer is configured as a linear array of storage locations for memory operations.
Claim 4
Dependent Claim 37 words
The load/store unit as recited in claim 1 wherein said, wherein said load pointer is changed in response to a storage of a new load memory operation into said buffer, while said store pointer is held constant.
Claim 5
Dependent Claim 31 words
The load/store unit as recited in claim 3 wherein said load pointer advances from one end of said buffer and said store pointer advances from the opposite end of said buffer.
Claim 6
Dependent Claim 29 words
The load/store unit as recited in claim 1 wherein said output control unit is configured to select said memory operation from said buffer according to a fixed priority scheme.
Claim 7
Dependent Claim 83 words
The load/store unit as recited in claim 1, wherein said output control unit is configured to select said memory operation from said buffer according to a scheme wherein: store memory operations that are not speculative are given a high priority; memory operations that are not speculative and are known to miss said data cache via previous access to said data cache are given an intermediate priority; and load memory operations that have not previously accessed said data cache are given a low priority.
Claim 8
Dependent Claim 36 words
The load/store unit as recited in claim 6, wherein said output control unit is configured to receive information regarding the speculative state of said memory operation via a reorder buffer pointer provided by a reorder buffer.
Claim 9
Independent Claim 134 words
A method for operating a load/store buffer of a load/store unit including a plurality of storage locations comprising: maintaining a load pointer value for selectively controlling locations of said buffer to which load memory operations are stored; maintaining a store pointer value for selectively controlling locations of said buffer to which store memory operations are stored; storing a store memory operation into one of said plurality of storage locations; modifying said store pointer in response to storing said store memory operation while holding said load pointer constant; removing said store memory operation from said one of said plurality of storage locations; storing a load memory operation into said one of said plurality of storage locations; and modifying said load pointer in response to storing said load memory operation while holding said store pointer constant.
Claim 10
Independent Claim 134 words
A method for operating a load/store buffer of a load/store unit including a plurality of storage locations comprising: maintaining a load pointer value for selectively controlling locations of said buffer to which load memory operations are stored; maintaining a store pointer value for selectively controlling locations of said buffer to which store memory operations are stored; storing a store memory operation into one of said plurality of storage locations; modifying said store pointer in response to storing said store memory operation while holding said load pointer constant; removing said store memory operation from said one of said plurality of storage locations; storing a load memory operation into said one of said plurality of storage locations; and modifying said load pointer in response to storing said load memory operation while holding said store pointer constant.
Claim 11
Dependent Claim 29 words
The method as recited in claim 8 wherein said storing a store step is performed, then said removing step is performed, then said storing a load step is performed.
Claim 12
Dependent Claim 30 words
The method as recited in claim 8 wherein said storing a load is step is performed, then said removing step is performed, then said storing a store step is performed.
Claim 13
Dependent Claim 36 words
The method as recited in claim 8 wherein said removing further comprises removing store memory operations from said buffer according to their speculative state as indicated by a reorder buffer pointer provided by a reorder buffer.
Claim 14
Dependent Claim 36 words
The method as recited in claim 8 wherein said removing further comprises removing load memory operations from said buffer based on their speculative state as indicated by a reorder buffer pointer provided by a reorder buffer.
Claim 15
Dependent Claim 31 words
The method as recited in claim 8 wherein said removing further comprises removing load memory operations from a buffer if said load memory operations are known to hit said data cache.
Claim 16
Dependent Claim 294 words
A load/store unit for a superscalar microprocessor comprising: a buffer including a plurality of storage locations configured to store information regarding pending memory operations wherein said buffer further includes an input port configured to receive said information, and wherein said buffer further includes a data cache port configured to communicate data access commands to a data cache, and wherein said plurality of storage locations are configured such that a load memory operation may be stored in one of said plurality of storage locations in a given clock cycle and a store memory operation may be stored in said one of said plurality of storage location in a different clock cycle; an input control unit coupled to said buffer, wherein said input control unit is configured to direct the transfer of said information from said input port to a particular storage location within said buffer, wherein said input control unit further comprises a load pointer and a store pointer, and wherein said load pointer is configured to direct a given load memory operation received in a particular clock cycle to a selected one of said plurality of storage locations, and wherein said store pointer is configured to direct a given store memory operation received in said particular clock cycle to another of said plurality of storage locations, and wherein said load pointer advances from one end of said buffer and said store pointer advances from the opposite end of said buffer; and an output control unit coupled to said buffer, wherein said output control unit is configured to select a memory operation stored within said plurality of storage locations within said buffer, and wherein said output control unit is further configured to direct a data access command associated with said operation to said data cache.
Claim 17
Dependent Claim 294 words
A load/store unit for a superscalar microprocessor comprising: a buffer including a plurality of storage locations configured to store information regarding pending memory operations wherein said buffer further includes an input port configured to receive said information, and wherein said buffer further includes a data cache port configured to communicate data access commands to a data cache, and wherein said plurality of storage locations are configured such that a load memory operation may be stored in one of said plurality of storage locations in a given clock cycle and a store memory operation may be stored in said one of said plurality of storage location in a different clock cycle; an input control unit coupled to said buffer, wherein said input control unit is configured to direct the transfer of said information from said input port to a particular storage location within said buffer, wherein said input control unit further comprises a load pointer and a store pointer, and wherein said load pointer is configured to direct a given load memory operation received in a particular clock cycle to a selected one of said plurality of storage locations, and wherein said store pointer is configured to direct a given store memory operation received in said particular clock cycle to another of said plurality of storage locations, and wherein said load pointer advances from one end of said buffer and said store pointer advances from the opposite end of said buffer; and an output control unit coupled to said buffer, wherein said output control unit is configured to select a memory operation stored within said plurality of storage locations within said buffer, and wherein said output control unit is further configured to direct a data access command associated with said operation to said data cache.
Claim 18
Dependent Claim 23 words
The load/store unit as recited in claim 14 wherein said buffer is configured as a linear array of storage locations for memory operations.
Claim 19
Dependent Claim 29 words
The load/store unit as recited in claim 14 wherein said output control unit is configured to select said memory operation from said buffer according to a fixed priority scheme.
Claim 20
Dependent Claim 83 words
The load/store unit as recited in claim 14, wherein said output control unit is configured to select said memory operation from said buffer according to a scheme wherein: store memory operations that are not speculative are given a high priority; memory operations that are not speculative and are known to miss said data cache via previous access to said data cache are given an intermediate priority; and load memory operations that have not previously accessed said data cache are given a low priority.
Claim 21
Dependent Claim 36 words
The load/store unit as recited in claim 17, wherein said output control unit is configured to receive information regarding the speculative state of said memory operation via a reorder buffer pointer provided by a reorder buffer.
Claim 22
Dependent Claim 274 words
A load/store unit for a superscalar microprocessor comprising: a buffer including a plurality of storage locations configured to store information regarding pending memory operations wherein said buffer further includes an input port configured to receive said information, and wherein said buffer further includes a data cache port configured to communicate data access commands to a data cache, and wherein said plurality of storage locations are configured such that a load memory operation may be stored in one of said plurality of storage locations in a given clock cycle and a store memory operation may be stored in said one of said plurality of storage location in a different clock cycle; an input control unit coupled to said buffer, wherein said input control unit is configured to direct the transfer of said information from said input port to a particular storage location within said buffer; and an output control unit coupled to said buffer, wherein said output control unit is configured to select a memory operation stored within said plurality of storage locations within said buffer, and wherein said output control unit is further configured to direct a data access command associated with said operation to said data cache, and wherein said output control unit is configured to select said memory operation from said buffer according to a scheme wherein: store memory operations that are not speculative are given a high priority; memory operations that are not speculative and are known to miss said data cache via previous access to said data cache are given an intermediate priority; and load memory operations that have not previously accessed said data cache are given a low priority.
Claim 23
Dependent Claim 274 words
A load/store unit for a superscalar microprocessor comprising: a buffer including a plurality of storage locations configured to store information regarding pending memory operations wherein said buffer further includes an input port configured to receive said information, and wherein said buffer further includes a data cache port configured to communicate data access commands to a data cache, and wherein said plurality of storage locations are configured such that a load memory operation may be stored in one of said plurality of storage locations in a given clock cycle and a store memory operation may be stored in said one of said plurality of storage location in a different clock cycle; an input control unit coupled to said buffer, wherein said input control unit is configured to direct the transfer of said information from said input port to a particular storage location within said buffer; and an output control unit coupled to said buffer, wherein said output control unit is configured to select a memory operation stored within said plurality of storage locations within said buffer, and wherein said output control unit is further configured to direct a data access command associated with said operation to said data cache, and wherein said output control unit is configured to select said memory operation from said buffer according to a scheme wherein: store memory operations that are not speculative are given a high priority; memory operations that are not speculative and are known to miss said data cache via previous access to said data cache are given an intermediate priority; and load memory operations that have not previously accessed said data cache are given a low priority.
Claim 24
Dependent Claim 23 words
The load/store unit as recited in claim 19 wherein said buffer is configured as a linear array of storage locations for memory operations.
Claim 25
Dependent Claim 76 words
The load/store unit as recited in claim 19 wherein said input control unit further comprises a load pointer and a store pointer, and wherein said load pointer is configured to direct said load memory operation received in a given clock cycle to one of said plurality of storage locations, and wherein said store pointer is configured to direct said store memory operation received in a given clock cycle to another of said plurality of storage locations.
Claim 26
Dependent Claim 31 words
The load/store unit as recited in claim 21 wherein said load pointer advances from one end of said buffer and said store pointer advances from the opposite end of said buffer.
Claim 27
Dependent Claim 36 words
The load/store unit as recited in claim 19, wherein said output control unit is configured to receive information regarding the speculative state of said memory operation via a reorder buffer pointer provided by a reorder buffer.
Claim 28
Dependent Claim 236 words
A load/store unit for a microprocessor comprising: a buffer including a plurality of storage locations configured to store pending memory operations, wherein said buffer further includes an input port configured to receive said operations, wherein said plurality of storage locations are configured such that a pending load operation may be stored in a particular storage locations at a first time and a pending store operation may be stored in said particular storage location at a second time, and wherein said buffer is configured to communicate with a data cache; an input control unit coupled to said buffer, wherein said input control unit is configured to direct the transfer of said operations from said input port to particular storage locations within said buffer, wherein said input control unit includes a load pointer configured to direct the storage of pending load memory operations into particular storage locations and a store pointer configured to direct the storage of pending store memory operations into particular storage locations, wherein said load pointer and said store pointer are configured to point to different storage locations simultaneously; and an output control unit coupled to said buffer, wherein said output control unit is configured to select a particular pending memory operation stored within said plurality of storage locations, and wherein said output control unit is further configured to direct a data access command associated with said particular pending memory operation to said data cache.
Claim 29
Dependent Claim 236 words
A load/store unit for a microprocessor comprising: a buffer including a plurality of storage locations configured to store pending memory operations, wherein said buffer further includes an input port configured to receive said operations, wherein said plurality of storage locations are configured such that a pending load operation may be stored in a particular storage locations at a first time and a pending store operation may be stored in said particular storage location at a second time, and wherein said buffer is configured to communicate with a data cache; an input control unit coupled to said buffer, wherein said input control unit is configured to direct the transfer of said operations from said input port to particular storage locations within said buffer, wherein said input control unit includes a load pointer configured to direct the storage of pending load memory operations into particular storage locations and a store pointer configured to direct the storage of pending store memory operations into particular storage locations, wherein said load pointer and said store pointer are configured to point to different storage locations simultaneously; and an output control unit coupled to said buffer, wherein said output control unit is configured to select a particular pending memory operation stored within said plurality of storage locations, and wherein said output control unit is further configured to direct a data access command associated with said particular pending memory operation to said data cache.
Claim 30
Dependent Claim 25 words
The microprocessor as recited in claim 24, wherein said buffer is configured to receive and store multiple pending memory instructions in a particular clock cycle.
Claim 31
Dependent Claim 44 words
The microprocessor as recited in claim 25, wherein said load pointer is adjusted in response to the storage of a new load memory operation into said buffer, wherein said store pointer is unchanged in response to the storage of said new load memory operation.
Claim 32
Dependent Claim 72 words
The microprocessor as recited in claim 26, wherein said storage locations within said buffer are configured as a one-dimensional array having a first end and a second end, wherein said input control unit is configured to store pending load instructions in the closest available storage location to said first end, wherein said input control unit is configured to store pending store instructions in the closest available storage location to said second end.

USPTO Annuity & Maintenance Windows

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

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag