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

Stream buffer memory having a multiple-entry address history buffer for detecting sequential reads to initiate prefetching

Assignee: Hewlett Packard Development Co LP
•
Filing: 1992-04-24
•
Granted: 1994-12-06
•
Expires: 2012-04-24
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A read buffering system employs a bank of FIFOs to hold sequential read data for a number of data streams being fetched by a computer. The FIFOs are located in the memory controller, so the system bus is not used in the memory accesses needed to fill the stream buffer. The buffer system stores addresses used for read requests made by a CPU, and if a next sequential address is then detected in a subsequent read request, this is designated to be a stream (i.e., sequential reads). When a stream is thus detected, data is fetched from DRAM memory for addresses following the sequential address, and this prefetched data is stored in one of the FIFOs. A FIFO is selected using a least-recently-used algorithm. When the CPU subsequently makes a read request for data in a FIFO, this data can be returned without making a memory access, and so the access time seen by the CPU is shorter. By taking advantage of page mode, access to the DRAM memory for the prefetch operations can be transparent to the CPU, resulting in substantial performance improvement if sequential accesses are frequent. One feature is appending page mode read cycles to a normal read, in order to fill the FIFO. The data is stored in the DRAMs with ECC check bits, and error detection and correction (EDC) is performed on the read data downstream of the stream buffer, so the data in the stream buffer is protected by EDC.

Inventors

  • 👤 Paul M. Goodwin
  • 👤 Donald Smelser
  • 👤 David A. Tatosian

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-26 23:24
CPC Classifications
G; G06; G06F; G06F12/00; G06F12/02; G06F12/08; G06F12/0802; G06F12/0862; G06F2212/00; G06F2212/60; G06F2212/6022; G06F2212/6026

Claims Analysis

Total Claims: 19
Claim 1
Independent Claim 170 words
A method of buffering data read from a memory, comprising the steps of: storing addresses in a history buffer, said addresses being sequential to memory read addresses used for a plurality of read requests made to said memory by one or more requestors coupled thereto; detecting if a subsequent read request is made using an address which is equal to any one of the addresses stored in said history buffer, and, if so, generating a stream detect signal; in response to said stream detect signal, fetching data from said memory at a next-sequential address incremented from said sequential address, and storing said next-sequential address and said data in a stream buffer; comparing the address of a subsequent read request to the addresses stored in said stream buffer to determine whether said subsequent read request is to said next-sequential address; and if said subsequent read request is determined to be to said next-sequential address, sending said data from said stream buffer to the requestor without accessing said memory for said data.
Claim 2
Independent Claim 170 words
A method of buffering data read from a memory, comprising the steps of: storing addresses in a history buffer, said addresses being sequential to memory read addresses used for a plurality of read requests made to said memory by one or more requestors coupled thereto; detecting if a subsequent read request is made using an address which is equal to any one of the addresses stored in said history buffer, and, if so, generating a stream detect signal; in response to said stream detect signal, fetching data from said memory at a next-sequential address incremented from said sequential address, and storing said next-sequential address and said data in a stream buffer; comparing the address of a subsequent read request to the addresses stored in said stream buffer to determine whether said subsequent read request is to said next-sequential address; and if said subsequent read request is determined to be to said next-sequential address, sending said data from said stream buffer to the requestor without accessing said memory for said data.
Claim 3
Dependent Claim 44 words
A method according to claim 1 wherein said step of fetching data from said memory at said next-sequential address includes the further step of fetching a plurality of blocks of data from said memory at a plurality of addresses subsequent to said next-sequential address.
Claim 4
Dependent Claim 27 words
A method according to claim 2 including the further step of storing said plurality of blocks of data in said buffer, the buffer operating as a FIFO.
Claim 5
Dependent Claim 19 words
A method according to claim 1 wherein said buffer is a FIFO having a plurality of sets of entries.
Claim 6
Dependent Claim 28 words
A method according to claim 4 including the steps of selecting the least recently used of said sets of entries for storing said data from said next-sequential address.
Claim 7
Dependent Claim 38 words
A method according to claim 1 including the step of sending said read requests to said memory by said requestors via a system bus, said step of fetching data using a memory bus separate from said system bus.
Claim 8
Independent Claim 198 words
A system for reading data from a memory in response to read requests received from one or more requestors coupled thereto, comprising: a read buffer including a plurality of FIFOs, each FIFO having a plurality of entries; an address queue receiving and storing addresses sequential to the addresses of said read requests; a stream detect circuit for producing a stream detect signal in response to a read request having an address equal to one of said sequential addressees stored in said address queue; means responsive to said stream detect signal for selecting one of said FIFOs of said read buffer for storing sequential data; means for fetching data from said memory at locations subsequent to said sequential address and loading said fetched data and an address corresponding thereto into said selected FIFO; means for comparing the address of a subsequent read request to the addresses stored in said FIFOs to determine whether said subsequent read request is for any of said subsequent memory locations; and means for sending data from the one of said FIFOs that is determined to contain the memory location that said subsequent read request is for to the requestor making said subsequent read request.
Claim 9
Independent Claim 198 words
A system for reading data from a memory in response to read requests received from one or more requestors coupled thereto, comprising: a read buffer including a plurality of FIFOs, each FIFO having a plurality of entries; an address queue receiving and storing addresses sequential to the addresses of said read requests; a stream detect circuit for producing a stream detect signal in response to a read request having an address equal to one of said sequential addressees stored in said address queue; means responsive to said stream detect signal for selecting one of said FIFOs of said read buffer for storing sequential data; means for fetching data from said memory at locations subsequent to said sequential address and loading said fetched data and an address corresponding thereto into said selected FIFO; means for comparing the address of a subsequent read request to the addresses stored in said FIFOs to determine whether said subsequent read request is for any of said subsequent memory locations; and means for sending data from the one of said FIFOs that is determined to contain the memory location that said subsequent read request is for to the requestor making said subsequent read request.
Claim 10
Dependent Claim 42 words
A system according to claim 7 wherein said means for fetching data from said memory at said sequential address includes means for fetching a plurality of blocks of data from said memory at a plurality of addresses subsequent to said sequential address.
Claim 11
Dependent Claim 25 words
A system according to claim 8 including means for storing said plurality of blocks of data in said buffer, the buffer operating as a FIFO.
Claim 12
Dependent Claim 29 words
A system according to claim 9 wherein said buffer is a FIFO having a plurality of sets of entries for a plurality of sets of said blocks of data.
Claim 13
Dependent Claim 27 words
A system according to claim 10 including means for selecting the least recently used of said sets of entries for storing said data from said sequential address.
Claim 14
Dependent Claim 226 words
A computer system, comprising: (a) one or more CPUs coupled to a memory by a system bus, the CPUs sending memory read requests to said memory by said system bus; and (b) a memory controller coupled between said memory and said system bus, said memory controller including: a read buffer, the read buffer having a plurality of FIFOs, each FIFO having a plurality of entries; an address queue for receiving and storing addresses sequential to the addresses of said requests; a stream detect circuit for producing a stream detect signal in response to a read request having an address equal to one of said sequential addresses stored in said address queue; means responsive to said stream detect signal for selecting one of said FIFOs of said read buffer for storing sequential data; means for fetching data from said memory at locations subsequent to said sequential address and loading said fetched data and an address corresponding thereto into said selected FIFO; means for comparing the address of a subsequent read request to the address stored in said FIFOs to determine whether said subsequent read request is for any of said subsequent memory locations; and means for sending data from the one of said FIFOs that is determined to contain the memory location that said subsequent read request is for to the CPU making said subsequent read request.
Claim 15
Dependent Claim 226 words
A computer system, comprising: (a) one or more CPUs coupled to a memory by a system bus, the CPUs sending memory read requests to said memory by said system bus; and (b) a memory controller coupled between said memory and said system bus, said memory controller including: a read buffer, the read buffer having a plurality of FIFOs, each FIFO having a plurality of entries; an address queue for receiving and storing addresses sequential to the addresses of said requests; a stream detect circuit for producing a stream detect signal in response to a read request having an address equal to one of said sequential addresses stored in said address queue; means responsive to said stream detect signal for selecting one of said FIFOs of said read buffer for storing sequential data; means for fetching data from said memory at locations subsequent to said sequential address and loading said fetched data and an address corresponding thereto into said selected FIFO; means for comparing the address of a subsequent read request to the address stored in said FIFOs to determine whether said subsequent read request is for any of said subsequent memory locations; and means for sending data from the one of said FIFOs that is determined to contain the memory location that said subsequent read request is for to the CPU making said subsequent read request.
Claim 16
Dependent Claim 43 words
A computer system according to claim 12 wherein said means for fetching data from said memory at said sequential address includes means for fetching a plurality of blocks of data from said memory at a plurality of addresses subsequent to said sequential address.
Claim 17
Dependent Claim 26 words
A computer system according to claim 13 including means for storing said plurality of blocks of data in said buffer, the buffer operating as a FIFO.
Claim 18
Dependent Claim 30 words
A computer system according to claim 14 wherein said buffer is a FIFO having a plurality of sets of entries for a plurality of sets of said blocks of data.
Claim 19
Dependent Claim 28 words
A computer system according to claim 15 including means for selecting the least recently used of said sets of entries for storing said data from said sequential address.

References Cited (Backward Citations)

US4292674A Cited
US4621320A Cited
US4914575A Cited
US5185878A Cited
US5127088A Cited
US5003471A Cited
US5146578A Cited
US5170466A Cited
US5261066A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1997-12-05 1998-06-06 1998-12-06 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2001-12-05 2002-06-06 2002-12-06 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2005-12-05 2006-06-06 2006-12-06 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag