Two directional memory blocks
- supporting bidirectional transfers on low level IO devices takes considerable amount of resources and is mostly
unnecessary. It also slows down the communication.
- use only for testers, configuration tools, etc. Do not use for normal IO communication, reliable recovery from
exception situations gets complicated. Stick with one directional memory blocks.
- Both source and target buffers exist memory block in higher and in lower level.
- Source and target buffer tracks invalidated addresses at byte precision. This is done by using extra memory for mark bits.
- Invalidated data is transferred, again at byte precision.
- Received changes coming from lower hierarchy level are not echoed back down to same memory block.