History buffer control to reduce unnecessary allocations in a memory stream buffer
First Claim
1. A method, comprising the steps of:
- receiving from a processor a read command and an address together specifying a memory location to be read;
testing whether said read command is accompanied by an additional indication that said processor will be unable to accept data from said memory location for at least a predetermined time after the issuance of said read command by said processor;
storing an address value corresponding to said memory location into a history buffer and marking the stored value as a valid history buffer entry if said read command is not accompanied by said additional indication, and otherwise refraining from said storing and marking;
repeating the foregoing steps until there is at least one address value stored in said history buffer;
receiving another read command and an address together from said processor specifying another memory location to be read;
testing whether the address of said other memory location has a predetermined relationship with any one of the address values stored in valid entries in said history buffer, the existence of said predetermined relationship indicating that said other memory location sequentially follows the memory location corresponding to the stored address value for which said predetermined relationship exists;
if the address of said other memory location has said predetermined relationship with any of the address values stored in valid entries in said history buffer, asserting a stream detect signal, and otherwise refraining from asserting said stream detect signal;
upon the assertion of said stream detect signal, fetching from a memory the data stored at the memory location sequentially following said other memory location and storing the fetched data in a stream buffer; and
fetching the data stored in said stream buffer and returning it to said processor upon the receipt of a subsequent processor read command specifying said sequentially following memory location.
2 Assignments
0 Petitions
Accused Products
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 memory accesses used to fill the stream buffer. The 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. The system also prevents the unnecessary prefetching of data by preventing certain CPU requests from being used to detect streams. 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. 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. 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 stream buffer is protected by EDC.
-
Citations
3 Claims
-
1. A method, comprising the steps of:
-
receiving from a processor a read command and an address together specifying a memory location to be read; testing whether said read command is accompanied by an additional indication that said processor will be unable to accept data from said memory location for at least a predetermined time after the issuance of said read command by said processor; storing an address value corresponding to said memory location into a history buffer and marking the stored value as a valid history buffer entry if said read command is not accompanied by said additional indication, and otherwise refraining from said storing and marking; repeating the foregoing steps until there is at least one address value stored in said history buffer; receiving another read command and an address together from said processor specifying another memory location to be read; testing whether the address of said other memory location has a predetermined relationship with any one of the address values stored in valid entries in said history buffer, the existence of said predetermined relationship indicating that said other memory location sequentially follows the memory location corresponding to the stored address value for which said predetermined relationship exists; if the address of said other memory location has said predetermined relationship with any of the address values stored in valid entries in said history buffer, asserting a stream detect signal, and otherwise refraining from asserting said stream detect signal; upon the assertion of said stream detect signal, fetching from a memory the data stored at the memory location sequentially following said other memory location and storing the fetched data in a stream buffer; and fetching the data stored in said stream buffer and returning it to said processor upon the receipt of a subsequent processor read command specifying said sequentially following memory location. - View Dependent Claims (2, 3)
-
Specification