Thanks for a quick reply.
I am a new learner and I might have misunderstood the RISC V architecture here. Please correct if I am wrong.
I thought FENCE rw, rw instruction enforces the memory ordering, which should be broadcasted to system bus in order to assure data are globally visible, and wait for system level ACK, before the execution pipeline resume.
Note: I used to work on an architecture which has 2 level of barrier.
- The Light Barrier is not sent out to system bus, stopped at cache level once stores ahead of it completed.
- The Heavy Barrier is broadcasted to all memory related devices in system, making sure all memory stores, ahead of barrier from this core, are globally visible, and ACK back to requesting core.
Regards,
Tony Truong