Write buffer
Encyclopedia
A write buffer is a type of data buffer.
In a CPU cache
, a write buffer can be used to hold data
being written back from the cache
to main memory. This is a variation of write-through caching called buffered write-through.
Use of a write buffer in this manner frees the cache to service read requests while the write is taking place. It is especially useful for very slow main memory in that subsequent reads are able to proceed without waiting for long main memory latency. When the write buffer is full (i.e. all buffer entries are occupied), subsequent writes still have to wait until some slots are freed. To further mitigate this stall, one optimization called write buffer merge is proposed. Write buffer merge combines writes that have consecutive destination addresses into one buffer entry. Otherwise, they would occupy separate entries which increases the chance of pipeline stall.
Sometimes the terminology victim buffer is also called write buffer. Victim buffer is a buffer that stores dirty evicted lines in write-back caches (note that write-through caches don't write the evicted cache lines back) before they get written back to the higher level memory. Besides reducing pipeline stall by not waiting for dirty lines to write back as the original write buffer does, victim buffer also serves as a temporary backup storage when subsequent cache accesses exhibit locality
, requesting those recently evicted lines, which are still in the victim buffer.
In a CPU cache
CPU cache
A CPU cache is a cache used by the central processing unit of a computer to reduce the average time to access memory. The cache is a smaller, faster memory which stores copies of the data from the most frequently used main memory locations...
, a write buffer can be used to hold data
Data
The term data refers to qualitative or quantitative attributes of a variable or set of variables. Data are typically the results of measurements and can be the basis of graphs, images, or observations of a set of variables. Data are often viewed as the lowest level of abstraction from which...
being written back from the cache
Cache
In computer engineering, a cache is a component that transparently stores data so that future requests for that data can be served faster. The data that is stored within a cache might be values that have been computed earlier or duplicates of original values that are stored elsewhere...
to main memory. This is a variation of write-through caching called buffered write-through.
Use of a write buffer in this manner frees the cache to service read requests while the write is taking place. It is especially useful for very slow main memory in that subsequent reads are able to proceed without waiting for long main memory latency. When the write buffer is full (i.e. all buffer entries are occupied), subsequent writes still have to wait until some slots are freed. To further mitigate this stall, one optimization called write buffer merge is proposed. Write buffer merge combines writes that have consecutive destination addresses into one buffer entry. Otherwise, they would occupy separate entries which increases the chance of pipeline stall.
Sometimes the terminology victim buffer is also called write buffer. Victim buffer is a buffer that stores dirty evicted lines in write-back caches (note that write-through caches don't write the evicted cache lines back) before they get written back to the higher level memory. Besides reducing pipeline stall by not waiting for dirty lines to write back as the original write buffer does, victim buffer also serves as a temporary backup storage when subsequent cache accesses exhibit locality
Locality
Locality may refer to:* Locality, a.k.a. human settlement* Locality of reference in computer-science data-access issue* Locality * Locality * Locality, physics concept re principle of locality* Locality in astronomy...
, requesting those recently evicted lines, which are still in the victim buffer.