Looking at today’s embedded devices makes us realize what a tremendous change we have gone through during the past 5-10 years. These devices have become more powerful, with beautiful screens, amazing battery life, and of course, connectivity.
Evolution will continue. We will get better batteries, better screens, and more connectivity. But what will fuel the growth in numbers of devices and applications in the next five years? The answer is obvious: multicore.
Multicore processors deliver more performance per watt with a smaller die size, enabling them to power the devices of tomorrow. Multicore processors already reign in many of today’s embedded devices, especially those that power our telecommunications connections. Multicore will migrate from these devices into all the rest, including cell phones, printers, and automotive entertainment and industrial control devices. Multicore delivers more instructions per second. This increase in processing power offers two main benefits for next-generation embedded systems:
- Better performance: Counted in instructions per second, transactions per second, calls handled per second, measurements per second, and overall throughput
- Consolidation: The combination of multiple distinct pieces of functionality often serviced by multiple different operating system instances on a single chip
Multicore poses the challenge of harnessing this processing power. To understand this challenge, consider a telecom switch, which used to be built with multiple distinct processors. In this system, a crash on any processor was not detrimental; the processor would simply be rebooted. A next-generation telecom system, on the other hand, has 12 cores or more. A crash that brings down that processor could seriously damage the switch. Therefore, separation and fault isolation are necessary.
As another example, consider a medical system, which used to be built with a PC for human-machine interaction and integration with an office back end. This system used Microsoft Windows and productivity suites running on it as well as an embedded system providing control and data acquisition. In contrast, a next-generation medical system uses a single multicore device running both Microsoft Windows and the control and measuring functionality – different operating systems on the same multicore chip, which requires separation, fault containment, and collaboration between operating system instances to pass data.
The best way to properly manage these multicore devices is with virtualization. Virtualization allows a designer to partition a multicore chip. Each partition is separated from the next in space (memory, devices) and time (processor core usage) and provides fault containment, meaning that one partition cannot negatively affect another. Virtualization allows multiple partitions called virtual machines to share a single core and span several cores. For example, a virtual machine could split an eight-core multicore chip into three two-core partitions running Wind River Linux Symmetric Multi-Processing (SMP) and two single-core partitions running VxWorks. Figure 1 shows Wind River Hypervisor, part of Wind River’s Multicore Software Solution.
Virtualization technology has been around for many years. It initially started on IBM’s mainframes, then made its way into the IT sector, and now is being rapidly adopted in the embedded industry. Each of these sectors has slightly different requirements. In the embedded industry, footprint is important, as are real-time characteristics such as determinism and interrupt latency. Virtualization for embedded is available on new, powerful multicore chips such as Intel’s processors with VT-x virtualization technology and Freescale’s e500mc, which is used in some of the Systems-on-Chip (SoCs) in its QorIQ line. Virtualization is also available on Freescale’s e500 cores, which are used in embedded designs as well as on several ARM variants.
Multicore and virtualization are changing the way people design embedded systems. This combination of new technologies has the potential to turn the embedded evolution into a revolution.