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?
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.