Embedded Multicore Systems Using Virtual Machine Approach
The purpose of the VirtuES project is (a) to have an efficient multicore hardware implementation for currently popular programming language, Java, and (b) to develop understanding on how a multicore platform should be efficiently programmed. This understanding is reflected back to multicore architecture hardware design, to Java virtual machine implementation as well as to API based language constructs and design of parallel Java programs. Our project meets the current trends: (i) focus on processor hardware design is moving to multicore systems, (ii) Java continues to be popular language for writing applications to embedded (mobile) systems, and (iii) writing efficient thread-level parallel programs for multicore systems is seen very challenging – clear consensus on used parallel programming methods is missing.
Currently the virtual machine supports three CPU architectures (x86, PPC405 and MicroBlaze). The co-processors have been implemented on several FPGAs, including Spartan3, Virtex2Pro, Virtex4 and Virtex5. The number of parallel cores ranges from 1 to 8, being limited only by the amount of local memory in a given FGPA device. The operating system support includes WindowsXP, Linux 2.4, Linux 2.6 and uCLinux. As a final testament to the versatility of the system, the communication between the CPU and core(s) has been implemented using PLB3.4, PLB4.6, OPB, DCR and standard parallel cable.