Adaptive read-ahead disk cache
First Claim
1. A method for buffering read requests from a bus master to a data storage device using a cache system, said bus master having a bus master address output for requesting data and a bus master data input for receiving data corresponding to said bus master address output, said data storage device having a data storage device address input for receiving a data storage device address and a data storage device data output for providing data corresponding to said data storage device address input, said cache system having a bus master address input coupled to said bus master address output, a bus master data output coupled to said bus master data input, a data storage device address output coupled to said data storage address input, and a data storage device data input coupled to said data storage device data output, said cache system having a real cache with a real cache data buffer, a real cache address buffer and a real cache status buffer, the read cache address buffer having a plurality of entries for storing real cache addresses, said cache system having a virtual cache with only a virtual cache address buffer and a virtual cache status buffer, said cache system buffering data associated with said bus master address, said method comprising the steps of:
- storing said bus master address output in only said virtual cache address buffer if said bus master address output is not found in either of said real cache address buffer and said virtual cache address buffer;
filling said real cache data buffer with data responsive to said bus master address from said data storage device if said bus master address is found only in said virtual cache address buffer;
providing data responsive to sad bus master address directly from said bus master to said data storage device without placing said data in said real cache data buffer if said address is not found in said real cache address buffer or said virtual cache address buffer;
updating said real cache address buffer and said real cache status buffer if said bus master address is found only in said virtual cache address buffer;
detecting a hit in one of sad real cache address buffer entres if said bus master address output matches a real cache address; and
providing data from said real cache data buffer associated with said bit to said bus master.
4 Assignments
0 Petitions
Accused Products
Abstract
An adaptive read ahead cache is provided with a real cache and a virtual cache. The real cache has a data buffer, an address buffer, and a status buffer. The virtual cache contains only an address buffer and a status buffer. Upon receiving an address associated with the consumer'"'"'s request, the cache stores the address in the virtual cache address buffer if the address is not found in the real cache address buffer and the virtual cache address buffer. Further, the cache fills the real cache data buffer with data responsive to the address from said memory if the address is found only in the virtual cache address buffer. The invention thus loads data into the cache only when sequential accesses are occurring and minimizes the overhead of unnecessarily filling the real cache when the host is accessing data in a random access mode.
-
Citations
61 Claims
-
1. A method for buffering read requests from a bus master to a data storage device using a cache system, said bus master having a bus master address output for requesting data and a bus master data input for receiving data corresponding to said bus master address output, said data storage device having a data storage device address input for receiving a data storage device address and a data storage device data output for providing data corresponding to said data storage device address input, said cache system having a bus master address input coupled to said bus master address output, a bus master data output coupled to said bus master data input, a data storage device address output coupled to said data storage address input, and a data storage device data input coupled to said data storage device data output, said cache system having a real cache with a real cache data buffer, a real cache address buffer and a real cache status buffer, the read cache address buffer having a plurality of entries for storing real cache addresses, said cache system having a virtual cache with only a virtual cache address buffer and a virtual cache status buffer, said cache system buffering data associated with said bus master address, said method comprising the steps of:
-
storing said bus master address output in only said virtual cache address buffer if said bus master address output is not found in either of said real cache address buffer and said virtual cache address buffer; filling said real cache data buffer with data responsive to said bus master address from said data storage device if said bus master address is found only in said virtual cache address buffer; providing data responsive to sad bus master address directly from said bus master to said data storage device without placing said data in said real cache data buffer if said address is not found in said real cache address buffer or said virtual cache address buffer; updating said real cache address buffer and said real cache status buffer if said bus master address is found only in said virtual cache address buffer; detecting a hit in one of sad real cache address buffer entres if said bus master address output matches a real cache address; and providing data from said real cache data buffer associated with said bit to said bus master. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A disk caching system for buffering read requests comprising:
-
a bus master having a bus master address output for requesting data and a bus master data input for receiving data corresponding to said bus master address; a data storage device having a data storage device address input for receiving a data storage device address and a data storage device data output for providing data corresponding to said data storage device address; and a cache having a bus master address input coupled to said bus master address output, a bus master data output coupled to said bus master data input, a data storage device address output coupled to said data storage device address input, and a data storage device data input coupled to said data storage device data output, said cache system having a real cache with a real cache data buffer, a real cache address buffer and a real cache status buffer, the real cache address buffer having a plurality of entries for storing real cache addresses, said cache system having a virtul cache with only a virtual cache address buffer and a virtual cache status buffer, said cache system buffering data associated with said bus master address, said cache system including; means for storing said bus master address in only said virtual cache address buffer if said bus master address is not found in either of said real cache address buffer and said virtual cache address buffer; means for filling said real cache data buffer with data responsive to said bus master address from said data storage device if said bus master address is found only in said virtual cache address buffer; a means for providing data responsive to said address from said real cache data buffer to said data storage device if said address is found in said real cache address buffer; and a means for updating said real cache address buffer and said real cache status buffer if said bus master address is found only in said virtual cache address buffer; a means for providing data responsive to said address directly from said bus master to said data storage device without placing said data in said real cache buffer if said address is not found in said real cache buffer or said virtual cache address buffer; a means for detecting a hit in one of said real cache buffer entries if said bus master address matches a real cache address; and a means for providing data from said real cache data buffer associated with said hit to said bus mater. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. A computer system for buffering read requests comprising:
-
a bus master having a bus master address output for requesting data and a bus master data input for receiving data corresponding to said bus master address; a data storage device having a data storage device address input for receiving a data storage device address and a data storage device data output for providing data corresponding to said data storage device address; and a cache system having a bus master address input coupled to said bus master address output, a bus master data output coupled to said bus master data input, a data storage device address output coupled to said data storage device address input, and a data storage device data input coupled to said data storage device data output, said cache system having a real cache with a real cache data buffer, a real cache address buffer and a real cache status buffer, said cache system having a virtual cache with only a virtual cache address buffer and a virtual cache status buffer, said cache system buffering data associated with said bus master address, said cache system including; means for storing said bus master address in only said virtual cache address buffer if said bus master address is not found in either of said real cache address buffer and said virtual cache address buffer; means for filling said real cache data buffer with data responsive to said bus master address from said data store device if said bus master address is found only in said virtual cache address buffer; means for providing data responsive to said bus master address directly from said bus master to said data storage device without placing said data in said real cache data buffer if said address is not found in said real cache address buffer or said virtual cache address buffer; and means for updating said real cache address buffer and said real cache status buffer if said address is found only in said virtual cache address buffer, means for detecting a hit in one of said real cache address buffer entries if said bus master address output matches a real cache address; and means for providing data from said real cache data buffer associated with said hit to said bus master. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51)
-
-
52. A method for buffering read requests from a bus master to a data storage device using a cache system, said bus master having a bus master address output for requesting data and a bus master data input for receiving data corresponding to said bus master address output, said data storage device having a data storage device address input for receiving a data storage device address and a data storage device data output for providing data corresponding to said data storage device address input, said cache system having a bus master address input coupled to said bus master address output, a bus master data output coupled to said bus master data input, a data storage device address output coupled to said data storage device address input, and a data storage device data input coupled to said data storage device data output, said cache system having a real cache with a real cache data buffer, a real cache address buffer and a real cache status buffer, said cache system having a virtual cache with only a virtual cache address buffer and a virtual cache status buffer, said cache system buffering data associated with said bus master address, said method comprising the steps of:
-
buffering said bus master data in said real cache data buffer and storing said bus master address output in only said virtual cache address buffer if said bus master address output is not found in either of said real cache address buffer and said virtual cache address buffer; and filling said real cache data buffer with data responsive to said bus master address output from said data storage device if said bus master address output is found only in said virtual cache address buffer.
-
-
53. A method for buffering requests from a bus master to a data storage device using a cache system, said cache system including a virtual cache and a real cache, said method comprising the steps of:
-
predicting a read request is a sequential access if a request generates a hit to the real cache; predicting a read request is a random access if a request generates a miss to the virtual cache and a miss to the real cache; and predicting a read request is a sequential access if the request generates a miss to the real cache and a hit to the virtual cache. - View Dependent Claims (54, 55, 56, 57, 58, 59, 60, 61)
-
Specification