The design and evaluation of a high performance Smalltalk system
The design and evaluation of a high performance Smalltalk system
Firefly: a multiprocessor workstation
ASPLOS II Proceedings of the second international conference on Architectual support for programming languages and operating systems
Multiprocessor Smalltalk: a case study of a multiprocessor-based programming environment
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Multiprocessor Smalltalk: implementation, performance, and analysis
Multiprocessor Smalltalk: implementation, performance, and analysis
Back to the future: the story of Squeak, a practical Smalltalk written in itself
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Generation Scavenging: A non-disruptive high performance storage reclamation algorithm
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Many-core virtual machines: decoupling abstract from concrete concurrency
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
The architecture of the DecentVM: towards a decentralized virtual machine for many-core computing
Virtual Machines and Intermediate Languages
Which problems does a multi-language virtual machine need to solve in the multicore/manycore era?
Proceedings of the compilation of the co-located workshops on DSM'11, TMC'11, AGERE!'11, AOOPES'11, NEAT'11, & VMIL'11
Proceedings of the 2012 workshop on Modularity in Systems Software
Memory management for many-core processors with software configurable locality policies
Proceedings of the 2012 international symposium on Memory Management
Hi-index | 0.01 |
In order to construct a test-bed for investigating new programming paradigms for future "manycore" systems (i.e. those with at least a thousand cores), we are building a Smalltalk virtual machine that attempts to efficiently use a collection of 56-on-chip caches of 64KB each to host a multi-megabyte object heap. In addition to the cost of inter-core communication, two hardware characteristics influenced our design: the absence of hardware-provided cache-coherence, and the inability to move a single object from one core's cache to another's without changing its address. Our design relies on an object table, and the exploitation of a user-managed caching regime for read-mostly objects. At almost every stage of our process, we obtained measurements in order to guide the evolution of our system. The architecture and performance characteristics of a manycore platform confound old intuitions by deviating from both traditional multicore systems and from distributed systems. The implementor confronts a wide variety of design choices, such as when to share address space, when to share memory as opposed to sending a message, and how to eke out the most performance from a memory system that is far more tightly integrated than a distributed system yet far less centralized than in a several-core system. Our system is far from complete, let alone optimal, but our experiences have helped us develop new intuitions needed to rise to the manycore software challenge.