Multiprocessor SoCs can consist of homogenous clusters where processing elements like CPUs, GPUs, DSPs, and dedicated FPGA logic are identical; they can consist of heterogeneous systems where processing elements are different, or a combination of the two. Your system and application needs will dictate your multiprocessor software system needs.
To begin, let’s examine the case of homogeneous processing clusters. A hypervisor is a supervisory software that allows one or more virtual machines consisting of a host OS and application or bare-metal applications to run simultaneously. Hypervisors typically require a homogeneous processing cluster and hardware virtualization to work.
Hypervisors provide several advantages for homogeneous processing systems. By taking advantage of hardware virtualization, they offer efficient memory partitioning and peripheral assignment per virtual machine, delivering high flexibility, efficient resource sharing, low latency, and high-bandwidth communication between virtual machines.
Hypervisors can additionally manage critical system functions like boot sequence. And if a virtual machine crashes while running on the hypervisor, the crash does not have to affect the execution of the other virtual machines. The hypervisor can even reboot the crashed virtual machine without requiring an entire system reboot. The pros and cons of using a hypervisor for your multicore needs are detailed in the following white paper – Multicore System Management – Hypervisor or Multicore Framework.