iocpu-architecturememory-mapped-io

What is non-idempotent memory-mapped I/O meaning?


In RISCV privileged spec page 75 mention a term "non-idempotent memory-mapped I/O". What is non-idempotent memory-mapped I/O? Is it about non side effect?What is design concern about non-idempotent memory-mapped I/O?


Solution

  • It means writing the same value twice is not the same thing as writing it just once.

    e.g. an MMIO register where a write transaction triggers a UART to send the bits out over a serial port.

    Unlike for a device's control register where writing the value that's already there has no effect, e.g. just putting the device in the same state it was already in. Or e.g. a parallel port where the external pins reflect the bits in the MMIO register, and writing them again doesn't change anything.