On most modern uniprocessors memory operations are not executed in the order specified by the program code.
Programmers have to specify strict ordering on the memory operations within a thread.
However, as with out-of-order execution of other instructions, it may be possible to execute two memory operations in a different than the program implied order.
No chemical activity would be needed; they could store enormous amounts of information without benefit of normal memory operations.
MTuner keeps in memory the data about all the memory operations performed and their mutual relationship.
Using filtering it is possible to create complex queries to list only memory operations of interest.
Yes, a lot of compute tasks require lots of memory operations.
Machines can typically do just one memory operation per multiply-add, so values loaded must be reused at least twice.
Thus the expensive atomic memory operations happens less often than in simple spin around test-and-set.
This is because there are multiple memory operations outstanding, but not instructions.