System and method for performing a speculative cache fill
First Claim
Patent Images
1. A computer system comprising:
- a plurality of caches;
a plurality of cache controllers, wherein each cache controller is coupled to control a respective one of the caches;
a memory coupled to provide data to each of the caches; and
a cache coherency mechanism coupled to the cache controllers and the memory, wherein the cache coherency mechanism is configured to receive a request to provide a copy of data from the memory to a first cache;
wherein in response to receiving the request, the cache coherency mechanism is configured to send a probe to a first set of the cache controllers, wherein each of the first set of cache controllers is configured to determine whether its cache contains the data in response to receiving the probe;
wherein if a first number of clock cycles have elapsed after the probe was sent, the cache coherency mechanism is configured to provide a speculative response to the request before all of the first set of cache controllers have responded to the probe.
3 Assignments
0 Petitions
Accused Products
Abstract
A computer system may include several caches that are each coupled to receive data from a shared memory. A cache coherency mechanism may be configured to receive a cache fill request, and in response, to send a probe to determine whether any of the other caches contain a copy of the requested data. Some time after sending the probe, the cache controller may provide a speculative response to the cache fill request to the requesting device. By delaying providing the speculative response until some time after the probes are sent, it may become more likely that the responses to the probes will be received in time to validate the speculative response.
54 Citations
35 Claims
-
1. A computer system comprising:
-
a plurality of caches;
a plurality of cache controllers, wherein each cache controller is coupled to control a respective one of the caches;
a memory coupled to provide data to each of the caches; and
a cache coherency mechanism coupled to the cache controllers and the memory, wherein the cache coherency mechanism is configured to receive a request to provide a copy of data from the memory to a first cache;
wherein in response to receiving the request, the cache coherency mechanism is configured to send a probe to a first set of the cache controllers, wherein each of the first set of cache controllers is configured to determine whether its cache contains the data in response to receiving the probe;
wherein if a first number of clock cycles have elapsed after the probe was sent, the cache coherency mechanism is configured to provide a speculative response to the request before all of the first set of cache controllers have responded to the probe. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A computer system comprising:
-
a first cache controller configured to control a first cache;
a second cache controller configured to control a second cache;
a memory coupled to provide data to the first cache and the second cache; and
a cache coherency mechanism coupled to the first cache, the second cache, and the memory and configured to receive a first request to provide a copy of data to the first cache;
wherein in response to receiving the first request, the cache coherency mechanism is configured to send a probe to the second cache controller;
wherein in response to receiving the probe, the second cache controller is configured to determine whether the second cache contains the data;
wherein if a first amount of time has elapsed since the probe was sent and the second cache controller has not yet provided a response to the probe to the cache coherency mechanism, the cache coherency mechanism is configured to provide a speculative response to the first request to the first cache. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. A method of performing a cache fill in a shared memory computer system, the method comprising:
-
a first device asserting a first cache fill request requesting that data from system memory be stored in the first device'"'"'s cache;
in response to said asserting, sending a probe to a second device;
in response to receiving the probe, the second device determining whether the second device'"'"'s cache contains the data; and
in response to a first amount of time elapsing after said sending and not receiving a response to the probe from the second device before said elapsing, providing a speculative response to the first cache fill request to the first device. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35)
invalidating the speculative response in response to receiving a response to the probe from the second device before a decision point, wherein the response indicates that the system memory does not contain a most recent copy of the data;
in response to said invalidating, providing a non-speculative response to the first cache fill request to the first device, wherein the non-speculative response comprises the most recent copy of the data.
-
-
29. The method of claim 24, further comprising validating the speculative response in response to receiving a response to the probe from the second device, wherein the response to the probe indicates that the system memory contains a most recent copy of the data.
-
30. The method of claim 24, further comprising opening a launch window in response to said elapsing, wherein said providing a speculative response occurs during the launch window.
-
31. The method of claim 30, further comprising closing the launch window in response to a second amount of time elapsing after said sending.
-
32. The method of claim 24, wherein the first amount of time is measured in clock cycles.
-
33. The method of claim 32, further comprising decrementing a counter each clock cycle in response to said sending, wherein said elapsing occurs when the counter is decremented to a minimum counter value.
-
34. The method of claim 24, further comprising providing a non-speculative response to the first device before providing the speculative response to the first device.
-
35. The method of claim 24, wherein the second device is configured to control a second cache, wherein the second cache comprises a level one (L1) cache and a level two (L2) cache.
Specification