When a wr_bytes
command is accepted at the user
interface it is eventually assigned to a group state machine like other write or read
transactions. The group machine breaks the Partial Write into a read phase and a write
phase. The read phase performs the following:
- First reads data from memory.
- Checks for errors in the read data.
- Corrects single bit errors.
- Stores the result inside the Memory Controller.
After read data is stored in the controller, the write phase begins as follows:
- Write data is merged with the stored read data based on the write data mask bits.
- Any multiple bit errors in the read phase results in the error being made undetectable in the write phase as new check bits are generated for the merged data.
When the write phase completes, the group machine becomes available to process a new transaction. The RMW flow ties up a group machine for a longer time than a simple read or write, and therefore might impact performance.