This topic invariably comes up when talking to customers, unfortunately, there is not just one, but several primary use cases. There are multiple ways to look into the various use cases. The one I like best is to look at generic drivers. An alternative is to look at actual usages in the various industries.
Looking at the drivers first there really are two prime drivers:
- Performance, where a project is looking to use multi-core processors, typically high core-count, say 8 or more cores and they want to run operating systems most efficiently on these processors. Running a single SMP OS on these processors is often not feasible due to the overhead of SMP, the lack of fault containment and the inability to reboot independent cores. Virtualization creates multiple independent partitions on the multi-core processors and hence avoids the issue.
- Consolidation, where a product currently uses multiple single core processors. These can be combined onto a single single or multi-core processor to save bill-of-material-cost, power, space, maintenance and so forth. This often entails running a RTOS (VxWorks) next to a GPOS (Linux, Windows).
And then there is a third category dubbed Innovation, where customers are using one of the two primary drivers to completely change the way their product is architecture, resulting in a revolutionary new product, or a completely different business model for their product (focussing on software instead of hardware, a shift that has been ongoing in the embedded industry for years).
A completely different way to look at virtualization use cases is to look at industries.The first industry that comes to mind is Aerospace and Defence, where virtualization has been used for years through the Wind River VxWorks 653 platform. This platform is in used in many airframes and land-based systems for many years. This gives an easy answer to the question 'is virtualization ready for embedded?'. If it is used to fly commercial and military manned and unmanned airplanes, then yes, I am convinced it is.
However, we can keep on going down the list of industries, virtualization as well as multi-core is being used everywhere, from industrial control (small, real-time controllers), to medical (real-time control and graphical UIs), to telecom and networking (high core count processors), to automotive (consolidation and innovation) to mobile.
The last way to look at virtualization is to look at processor architectures. Unfortunately, this does not give us an easy answer either, customers are using powerful Intel processors with hardware virtualization (VT technology), Freescale with hardware virtualization (e500mc based such as the QorIQ P4080), but also without hardware virtualization (e500 based such as PPC8548, QorIQ P2020, P1022 and all of their variants), and even in the power efficient ARM processors.
To come back to our original question: No, there is no primary 'use case', there are many reasons why embedded developers across all industries are moving to virtualization. Virtualization is changing the landscape in all industries and your Wind River representative is happy to start the discussion as to how virtualization can help you become more competitive. In the mean-time, have a look at the three drivers I mentioned at the beginning of this post, have a read through my other blog posts on what virtualization can do and see if it can be applied to the project you are working on right now (and if so, feel free to comment on this post and leave your thoughts).