
Write Buffer
Copyright 2000–2001 by LSI Logic Corporation. All rights reserved.
7-11
7.5.1 Write Buffer Operation
The write buffer is used when the D-cache hits and/or misses, depending
on the mode of operation.
Table 7.2
shows how the Cd and Bd bits
control the behavior of the write buffer.
Table 7.2
Data Write Modes
Cd
Bd
Access Mode
Description
0
0
NCNB
(noncacheable,
nonbufferable)
Data reads and writes are not cached, and they can be aborted
externally. Writes are not buffered, so the processor is stalled until
the external access is performed. NCNB reads bypass the write
buffer.
0
1
NCB
(noncacheable,
bufferable)
Data reads and writes are not cached. Writes are buffered, and so
they cannot be aborted externally. Reads can be aborted
externally. Reads cause the write buffer to drain.
If the D-cache hits for this type of access, there has been a
programming error. D-cache hits are ignored, and the D-cache line
is not updated for a read.
Swap instruction operations on data in an NCB region are made
to perform NCNB type accesses and are
not
buffered.
1
0
WT (write through)
Searches the D-cache for reads and writes. Reads that miss in the
D-cache cause a line fill. Reads that hit in the D-cache do not
perform an external access. All writes are buffered, regardless of
whether they hit or miss in the D-cache. Writes that hit in the
D-cache update the cache, but do not mark the cache line as dirty,
because the write is also sent to the write buffer. Writes cannot be
externally aborted. D-cache line fills cause the write buffer to drain
before the line fill starts.
1
1
WB (write back)
Searches the D-cache for reads and writes. Reads that miss in the
D-cache cause a line fill. Reads that hit in the D-cache do not
perform an external access. Writes that miss in the D-cache are
buffered. Writes that hit in the D-cache update the cache line,
mark it as dirty, and do not send the data to the write buffer.
D-cache write-backs are buffered. Writes (write-miss and
write-back) cannot be externally aborted. D-cache line fills cause
the write buffer to drain before the line fill starts.