Virtualization Technology Adoption – part 4 – Embedded Processors
By now a trend is appearing – I’m working my way back through the technology adoption lifecycle. In the new year I was reading some blog posts and vendor literature on virtual machines in embedded computing. It was this reading that got me thinking about different value propositions of virtual machines in different computing classes and the stage of market adoption in each class. There is a lot of buzz right now about mobile computing (like smart phones), but for our purposes, let’s consider it a special case of embedded computing.
I’ve placed embedded computing in the early adopter stage of the technology adoption lifecycle since it is newer to the market than desktop and server virtualization. One of the reasons VMs were able to gain ground quickly in compute servers was that a single processor architecture dominates, the x86-64. Thus a virtual machine monitor compatible with an x86-64 CPU architecture could be easily deployed on most of the installed server market. This is not true for the embedded computing market, where no processor architecture dominates the market. Most embedded processors run a different type of operating system, a real time operating system (RTOS) which has very different requirements than Windows or Linux, so much different, that the market leading RTOS vendor had to build their virtual machine monitor product from scratch, as opposed to adapting products developed for desktop or server environments. Multi-core technology, a huge boost to a processor’s ability to support many virtual machines, is not as wide spread in embedded computing as it is in servers. Virtual machines also consume a lot of memory, and embedded systems are generally more memory constrained. The software written for embedded processors is more tightly integrated with specific features of the CPU architecture and hardware environment, which can make virtualization challenging; in many cases the processors themselves are embedded in a custom semiconductor device (the iPad for example has embedded the ARM processor into an Apple chip) further customizing the processor environment. Desktops and servers are general purpose computing, and can be deployed and re-deployed with an endless variety of software applications. In most cases, embedded processors are selected for a specific task, and the software and peripheral hardware are designed for a specific task; it is generally a closed system from a limited number of vendors and software updates, if the occur at all, are tightly managed. It is for these reasons, that virtualization technology is earlier in its market adoption, and I believe will progress more slowly up the technology adoption curve than compute servers.
With the advent of multi-core technology in embedded processors, an opportunity has arisen for complex embedded systems employing multiple embedded processors to consolidate the number of processors, saving circuit board real-estate and saving power and cost. But because these different processors perform different tasks, in many cases they may be from different CPU families and even be running different operating systems. Thus consolidating embedded applications from multiple embedded processors onto a multi-core chip running VMs is a first step similar to the server consolidation value proposition that drove adoption of VMs on servers, but the consolidation will likely be more complex. Another value proposition would be portability, as we need to be able to consolidate software written for different CPU architectures onto a single processor. Likewise, heterogeneity, as we may need to consolidate different operating systems onto a single processor.
In the next and last post in this series, we will look at virtual machine in supercomputing, also frequently referred to as High Performance Computing (HPC).



