| |||
| Home > Programmer’s Model > Buffers > Write buffer | |||
The write buffer has two slots that each contain one 256-bit data line and its associated address. The write buffer has merging capabilities so that successive writes to the same line address are merged in the same buffer slot. Two buffered write accesses to the same address cause the first one to be overridden if the write buffer has not been drained in between the writes.
Merging capability means that lines are not treated as soon as they contain data. Write buffer draining policy is:
the write buffer is drained at each noncacheable read occurrence
the write buffer is drained at each nonbufferable write occurrence
if the two slots of the write buffer contain data, the least recently accessed is drained
if a hazard is detected with one write buffer slot, it is drained to resolve the hazard.
Each slot contains a byte-valid field that allows the control logic to know the data line fill level. If a drained slot is drained while its data line is not full, the write buffer must request correct transactions to the master port in the form of bursts or linear access requests.
For write allocate transactions, the write buffer transfers information for one of its slots to a write-allocate buffer described in Write-allocate buffer.