MPS appears to have been designed in a single core era, and it would be great if you would address any architectural changes that were made to address the current prevailing multi-core platforms.
/tia
[edit: removed ref to the azul q]
MPS appears to have been designed in a single core era, and it would be great if you would address any architectural changes that were made to address the current prevailing multi-core platforms.
/tia
[edit: removed ref to the azul q]
Most of the problems are around the bottleneck of stopping threads on other cores in order to get privileged access to memory while preserving their consistent view of the heap. What the MPS needs is its own protection map. Most OSs don't help much with that, although Mac OS X, for a while, allowed you to map the same physical RAM at two addresses with different protections. Sadly, no longer.
The restriction could be removed if either:
* the MPS could use a different set of protections to the mutator program
* the mutator program uses a software barrier
The first one is tricky, and the second one just hasn't come up in any implementation we've been asked to make yet. Given a VM, it could happen, and the MPS would be concurrent.So, I believe there's nothing fundamentally non-concurrent about the MPS design. It's kind of waiting to happen.
[I've put this in a comment in the code. Thanks for making me write it down :)]