12.5 Handling Requests

Store Miss


When a processor store misses in both the primary and secondary caches, the processor must obtain, from the external agent, the cache line that contains the target location of the store. The processor examines the coherency attribute in the TLB entry for the page (TLB page coherency attributes are listed in Chapter 4) that contains the requested cache line to see if the cache line is being maintained with either a write invalidate or a write update cache coherency protocol.

The processor then executes one of the following requests:

Table 12-4 shows the actions taken on a store miss to primary and secondary caches.

Table 12-4 Store Miss to Primary and Secondary Caches

Secondary-Cache Mode

In secondary-cache mode, if the new cache line replaces a current cache line that is in either the dirty exclusive or dirty shared state, the current cache line must be written back before the new line can be loaded in the primary and secondary caches. The processor requests issued are a function of the page attributes listed below.

Noncoherent Page Attribute

If the current cache line must be written back, and the coherency attribute for the requested cache line is noncoherent, the processor issues a cluster consisting of a noncoherent block read-with-write-forthcoming request for the cache line that contains the store target location, followed by a block write request for the current cache line.

If the current cache line does not need to be written back and the coherency attribute for the page that contains the requested cache line is noncoherent, the processor issues a noncoherent block read request for the cache line that contains the store target location.

Sharable or Exclusive Page Attribute

If the current cache line must be written back and the coherency attribute for the page that contains the requested cache line is sharable or exclusive, the processor issues a cluster consisting of a coherent block read request with exclusivity and write forthcoming, followed by a processor block write request for the current cache line.

If the current cache line does not need to be written back and the coherency attribute for the page that contains the requested cache line is sharable or exclusive, the processor issues a coherent block read request that also requests exclusivity.

Update Page Attribute

If the current cache line must be written back and the coherency attribute for the page that contains the requested cache line is update, and potential updates are enabled, the processor issues a cluster consisting of a coherent block read-with-write-forthcoming request, followed by a potential update request, followed by a write request for the current cache line.

If the current cache line does not need to be written back, the coherency attribute for the page that contains the requested cache line is update, and potential updates are enabled, the processor issues a cluster consisting of a read request, followed by a potential update request.

In an update protocol, the cache line requested by a processor coherent read request can be returned in a shared state; the processor then has to issue an update request before it can complete a store instruction. A potential update issued with a read request in a cluster allows the external agent to anticipate the read response on the system bus. If the read response is in a shared state, the required update is quickly transmitted to the rest of the system. This provides the processor with the acknowledge and allows the processor to complete the store instruction as rapidly as possible.

Without the potential update request, the response data must be returned to the processor. If the line is returned in the shared or dirty shared state, the processor issues an update request, which must then be forwarded to the system bus before an acknowledge can be returned to the processor.

Note that potential updates behave as if they have not yet been issued by the processor. Potential updates are not subject to cancellation, and do not require an acknowledge. When a potential update is nullified, the processor behaves as if no update request was ever issued; when a potential update becomes compulsory, the processor behaves as if it had issued an update request at that instant.

Compulsory Update: If the processor issues a cluster that contains a potential update, and the response data for the read request is returned with an indication that it must be placed in the cache in either a shared or dirty shared state, the potential update then becomes compulsory. Once a potential update becomes compulsory, it is subject to cancellation, and the processor requires an acknowledge for the update request. The external agent must forward the update to the system, then signal the acknowledge to the processor when the update is complete. The processor will not complete the store until it has received an acknowledge for the update request.

Nullifying a Potential Update: If the processor issues a cluster that contains a potential update, and the response data for the read request is returned in either a clean exclusive or dirty exclusive state, the potential update is nullified. Once a potential update has been nullified, the external agent must discard the update. The processor does not wait for or expect an acknowledge to a potential update that has been nullified. It is not correct to assert either IvdAck* or IvdErr* in this situation.

If the read response data is returned in either the clean exclusive or dirty exclusive state, the processor cannot issue an update request. It is assumed that the external agent will take the appropriate action to change the state of the cache line to invalid in other caches.

An external request indicating processor update cancellation can be issued when a processor read is not pending or when compulsory update is unacknowledged. Processor state is undefined if a cancellation is signaled on an external coherence request to the processor when a processor read is pending, or there is no unacknowledged compulsory update.

No-Secondary-Cache Mode

The processor issues a read request for the cache line that contains the data element to be loaded, then awaits the external agent to provide read data in response to the read request. Then, if the current cache line must be written back, the processor issues a write request for the current cache line.

In no-secondary-cache mode, if the new cache line replaces a current cache line whose Write back (W) bit is set, the current cache line moves to an internal write buffer before the new cache line is loaded in the primary cache.



Copyright 1996, MIPS Technologies, Inc. -- 21 MAR 96

Generated with CERN WebMaker
statistics