Here is a good blog posting by Gernot Heiser on some of the reasons why virtualization is required for effective resource management on multi-corechips. The post has a strong focus on wireless devices. While there may not be a lot of multi-core1 chips in cell phones currently, this will certainly increase in the upcoming years. OK Labs is now a member of the multi-core association as well, welcome to the party guys!
1 Not counting SoCs with heterogeneous cores
The reasons that Gernot mentions in his posting hold in other areas such as printers, storage devices, networking infrastructure nodes, industrial control, networking, aerospace, automotive and so forth as well. Resource management is important for virtually (pun intended) every device nowadays. Besides resource management, there are significant other reasons that customers are using virtualization on top of multi-core for:
1) Re-use and innovation. Software for embedded devices is typically not written from scratch. There are large mountains of code that need to be re-used, preferably on their existing OS. Virtualization enables multiple different (versions of) operating systems to run in different partitions on the same chip, the developer (more typically the system architect) can decide the mapping based on amount of horsepower needed by each partition.
2) Separation (and this is an important one). How does one ensure that one partition does not impact another partition with regards to safety or security? The answer: a layer underneath the operating systems that provides the separation that is small and secure and that manages the multi-core chip. The virtualization layer keeps the partitions apart and allows one partition to be restarted without impacting the rest of the system.
3) Ease of migration. In many of these devices people want to truly decouple their software layer from the physical layer. That is, decouple their software from their hardware. This will help them migrate to newer devices, more cores, different peripherals without having to make sweeping changes through their software architecture.
4) Agility.Virtualization also allows the development team to adjust how the partitions are mapped to the physical cores in a particular design. With the complexity of todays hardware and software, it is difficult, if not impossible to get your design correct the first time. Virtualization provides an additional layer to make adjustments in without touching the software loads of the system.
All in all, virtualization for embedded is here to stay, it's importance will grow as the usage of multi-core in embedded grows.
Mark is a senior product manager with Wind River focusing on multicore and virtualization solutions. Prior to joining Wind River Mark has helped development teams build embedded systems across Asia, Europe and North America in automotive, telecom, consumer electronics and defense industries.

Comments