RoarVM以前被称为复兴虚拟机(Renaissance Virtual Machine,RVM),是IBM研究项目的一部分,旨在研究未来许多核心系统的编程范式和语言。具体来说,这个虚拟机意味着支持未来超过1000个内核的多核系统。
RVM由IBM Research根据Eclipse公共许可证进行开源。有关更多信息,请参阅开源公告。
如今,RoarVM支持在x86兼容的多核系统和基于Tilera TILE64的多核系统上并行执行Smalltalk程序。它使用标准的Squeak 4.1闭包图像进行了测试,并使用了基于MVC的Squeak 3.9图像的剥离版本。
RoarVM提供了Smalltalk进程的并行执行,因此,程序设计模型是一个典型的共享内存模型,类似于Java,其线程和C/C++的经典pthread。
RoarVM与Squeak及其叉子兼容。然而,Smalltalkimages需要进行大量更改,以使其能够利用多个Core并与VM正确交互。
RoarVM的源代码已作为开源发布,以使MallTalk社区能够评估这些想法,并可能将其集成到现有系统中。RoarVM提供了在多核和多核机器上使用Smalltalk系统进行实验所需的功能,这是我们希望鼓励的。
然而,我们也欢迎所有对RoarVM本身的贡献。要么将其升级到现有虚拟机的速度,要么将其扩展以进行进一步的实验。
RoarVM是一个研究项目,在性能方面不如标准Squeak VM优化。因此,其顺序性能较慢。这是因为RoarVM忽略了优化,比如使用GCC labelas值扩展来加速解释器。
当RoarVM在多个内核上运行时,空闲进程不会产生响应。事件处理尚未完全适应,因此,空闲进程正忙于等待性能原因
基于X11的图形子系统与如今的Squeak虚拟机(尤其是OS X版本)相比,RoarVM仅使用X11,没有像Squeak虚拟机那样集成到OSas中
David Ungar和Sam S.Adams著,《第五届动力学语言研讨会论文集》,ACM(2009),第99-110页。http://portal.acm.org/citation.cfm?id=1640134.1640149
编程环境由Joseph Pallas和David Ungar撰写,1988年ACM Sigplan编程语言设计与实现会议记录,ACM(1988),第268-277页。http://portal.acm.org/citation.cfm?id=54017
ROARVM类似于SimeAcK/SLUN中的SueAK VM,但是它在C++中被改写,以便于在许多CARICAL体系结构上进行开发。例如Squeak VM插件的C源代码已经被直接重用。此代码位于/src/from squeak/。
对x86兼容多核系统的支持目前基于POSIXthreads。因此,可以使用在不同处理器内核上执行的多个线程启动RoarVM。在基于Tilera TILE64的系统上,使用iLiblibrary,并为每个处理器核心启动一个单独的进程,每个进程执行一个解释器实例。对于这两种体系结构,vm都为Smalltalk用户提供了一个跨越所有核心的单一对象堆的假象。Smalltalk进程由可用处理器内核上的单个调度器调度,因此,这些进程可以并行执行。对于同步,可以使用标准的Smalltalk机制。信号量和互斥量的工作原理与经典系统相同。目前,RoarVM使用一个基于Pallas[2]设计的中央调度器。它的数据结构可以从图像中访问,只需要对图像进行最小的修改,因为它不会改变执行的一般模型。
RoarVM的一个显著特点是使用了对象表。它的引入是为了降低在许多核心体系结构的堆之间进行对象迁移所需的复杂性。
版权所有(c)2008-2010 IBM公司和其他公司。版权所有。根据Eclipse公共许可证v1的条款,本RoarVM及其附带的资料是可用的。0,可从以下网址获得:
直接从原始Squeak源代码中接管的所有部分都在其原始许可证下获得许可。
由于RoarVM基于为Squeak所做的工作,我们想感谢Squeak社区作为一个整体所做的宝贵工作。