Building Multi-kernel Embedded System on PAC Multi-core Platform

It is common nowadays that consumer embedded system products are built on platforms with System-On-a-Chip (SOC) in which two or more processor cores, which are not necessarily of the same type, are put into a single chip and form the architecture of Chip-level Multi-Processor (CMP). Although such platform is capable of achieving high performance at relatively low cost, the system architecture of CMP brings new design challenges as well as increased complexity in developing embedded software especially at the level of kernel or operating system software. This paper presents our experience and some preliminary results from the project of building a multi-kernel embedded system platform for application software running in the environment of a newly developed multi-core SOC, namely PAC Duo SOC, which is the latest product from the PAC (short for Parallel Architecture Core) Project initiated by the Industry Technology Research Institute (ITRI) in Taiwan. PAC Duo SOC is a chip-level heterogeneous multi-processor SOC composed of one ARM926 core serving as the general purpose processor (GPP for short) and two ITRI PAC DSP cores serving as the special purpose processors (SPP). We ported Linux operating system to run on the ARM926 processor and ported mC/OS-II real-time kernel to run on one PAC DSP core, leaving the other PAC DSP core with the option, for flexibility, of running either mC/OS-II or a different kernel. In addition, an inter-processor communication (IPC) mechanism is developed which not only takes application-specific requirements into account but also takes advantages of hardware features.

[1]  Tatsuo Nakajima,et al.  SIGMA System: A Multi-OS Environment for Embedded Systems , 2010, J. Signal Process. Syst..

[2]  Tatsuo Nakajima,et al.  SPUMONE: Lightweight CPU Virtualization Layer for Embedded Systems , 2008, 2008 IEEE/IFIP International Conference on Embedded and Ubiquitous Computing.

[3]  William Stallings,et al.  Operating Systems: Internals and Design Principles , 1991 .

[4]  Barry Kauler A tiny microcontroller dataflow kernel , 1996, Microprocess. Microsystems.

[5]  Adrian Schüpbach,et al.  The multikernel: a new OS architecture for scalable multicore systems , 2009, SOSP '09.

[6]  Kevin Klues,et al.  Tessellation: space-time partitioning in a manycore client OS , 2009 .

[7]  Gordon Mcnutt,et al.  Using Linux to Control DSP Processes in mixed-processor Systems , 2001 .

[8]  Wayne H. Wolf,et al.  Multiprocessor Systems-on-Chips , 2004, ISVLSI.

[9]  Charles Crowley,et al.  Operating Systems: A Design-Oriented Approach , 1996 .

[10]  SkjellumAnthony,et al.  A high-performance, portable implementation of the MPI message passing interface standard , 1996 .

[11]  George Bosilca,et al.  Open MPI: A High-Performance, Heterogeneous MPI , 2006, 2006 IEEE International Conference on Cluster Computing.

[12]  Yang Zhang,et al.  Corey: An Operating System for Many Cores , 2008, OSDI.

[13]  Kuljeet Singh,et al.  Design and Evaluation of an Embedded Real-time Micro-kernel , 2002 .

[14]  Robert P. Goldberg,et al.  Survey of virtual machine research , 1974, Computer.

[15]  Jonathan Robinson,et al.  A task migration implementation of the Message-Passing Interface , 1996, Proceedings of 5th IEEE International Symposium on High Performance Distributed Computing.

[16]  Jonathan M. Smith,et al.  AsyMOS-an asymmetric multiprocessor operating system , 1998, 1998 IEEE Open Architectures and Network Programming.

[17]  Beng-Hong Lim,et al.  Virtualizing I/O Devices on VMware Workstation's Hosted Virtual Machine Monitor , 2001, USENIX Annual Technical Conference, General Track.

[18]  Anthony Skjellum,et al.  A High-Performance, Portable Implementation of the MPI Message Passing Interface Standard , 1996, Parallel Comput..

[19]  Shau-Yin Tseng,et al.  PAC DSP Core and Its Applications , 2006, 2006 IEEE Asian Solid-State Circuits Conference.

[20]  Yuan-Hua Chu,et al.  Overview of ITRI PAC project - from VLIW DSP processor to multicore computing platform , 2008, 2008 IEEE International Symposium on VLSI Design, Automation and Test (VLSI-DAT).

[21]  William Stallings,et al.  Operating Systems - Internals and Design Principles (7th ed.) , 2001 .

[22]  David J. DeWitt,et al.  Operating System Support for High Performance Parallel I/O Systems , 1994 .

[23]  Abraham Silberschatz,et al.  The Pebble Component-Based Operating System , 1999, USENIX Annual Technical Conference, General Track.

[24]  Andrew S. Tanenbaum,et al.  Operating systems: design and implementation , 1987, Prentice-Hall software series.

[25]  Shau-Yin Tseng,et al.  PAC DSP Core and Application Processors , 2006, 2006 IEEE International Conference on Multimedia and Expo.

[26]  Carl A. Waldspurger,et al.  Memory resource management in VMware ESX server , 2002, OSDI '02.

[27]  Tal Garfinkel,et al.  Virtual machine monitors: current technology and future trends , 2005, Computer.

[28]  Youngsoo Kim,et al.  Designing real-time H.264 decoders with dataflow architectures , 2005, 2005 Third IEEE/ACM/IFIP International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS'05).

[29]  Gernot Heiser,et al.  Pre-virtualization: Soft layering for virtual machines , 2008, 2008 13th Asia-Pacific Computer Systems Architecture Conference.