CellVM: A Homogeneous Virtual Machine Runtime System for a Heterogeneous Single-Chip Multiprocessor
Albert Noll, Andreas Gal · 2008
The Cell Broadband Engine Architecture (Cell) is a hardware platform for high performance parallel computing. Due to its architectural features and programming model, efficiently programming the Cell processor implies a detailed knowledge of the underlaying hardware architecture, carefully designed communication protocols to minimize the synchronization and communication overhead between the individual processing units as well as an elaborate layout of the vector processor’s local stores. In order to take the burden from the programmer of having to deal with such low-level architecture-specific details, the Cell compiler toolchain implements the OpenMP standard [27], which allows for seamless parallelization of applications by offloading workloads to the SPEs. In this paper we report on the design and implementation of a middleware for the Cell processor that goes one step further and completely abstracts the heterogeneity of the underlaying hardware architecture and allows programmers to employ higher-level and more intuitive programming constructs than the OpenMP approach. In particular, we implemented a virtual machine (VM) that mimics the behavior of a homogeneous, shared-memory multiprocessor. Internally, our VM schedules individual threads to be executed on the vector cores which offers the same parallelism as compared to the traditional programming models of the Cell processor. 1