[Vm-dev] RoarVM: The Manycore SqueakVM

Stefan Marr squeak at stefan-marr.de
Wed Nov 3 18:01:43 UTC 2010

Hi Andreas:

On 03 Nov 2010, at 18:39, Andreas Raab wrote:

> On 11/3/2010 10:27 AM, Stefan Marr wrote:
>> On 03 Nov 2010, at 17:57, Andreas Raab wrote:
>>>> The source code of the RoarVM has been released as open source to enable the
>>>> Smalltalk community to evaluate the ideas and possibly integrate them into
>>>> existing systems. So, the RoarVM is meant to experiment with Smalltalk systems
>>>> on multi- and manycore machines.
>>> Can you give us a high-level overview about what "the trick" is? I.e., which approach did you take to make this possible?
>> Ehm, sorry, I do not really know where to start.
>> Could you be a bit more specific with your question?
> Well, I was hoping you could tell us where to start. After all you know more about this stuff than we do :-)

Partially, the question is also what degree of detail do you want?

The VM runs one interpreter per core.
At the moment, you decide on the number of cores you want to use at startup.

Once the interpreters are initialized they try to grab some work.
For this, there is the standard scheduler, just protected by a mutex.
As soon as an interpreter gets hold of a process for execution it starts to execute it.
And then there are the normal points when it could reevaluate the scheduling decision.

Other than that, there are some important simplifications in the VM. For instance it uses an object table to be able to move objects around easily. The GC uses a simple compacting mark/sweep stop-the-world algorithm. Many of the design decisions are made with respect to the manycore architecture we are running the VM on. So, they are not necessarily optimal for today's x86 multicore systems.
For instance, the interpreters pass messages instead of using shared memory for certain information that needs to be kept consistent.

So, well, I hope that gives you some points you could ask more detailed questions about :)

>> A probably a bit too condensed overview is given in the technical section of the README.
>> http://github.com/smarr/RoarVM/blob/master/README.rst
> Any chance you could make versions of the referenced papers available? This would surely help.
I asked David.

Best regards

Stefan Marr
Software Languages Lab
Vrije Universiteit Brussel
Pleinlaan 2 / B-1050 Brussels / Belgium
Phone: +32 2 629 2974
Fax:   +32 2 629 3525

More information about the Vm-dev mailing list