The proliferation of multicore processors has done more than provide a boost in processing power to server applications. Multicore chips also pose the opportunity to revolutionize how embedded systems are constructed. Developers now can host real-time operating systems (RTOSs) and general-purpose operating systems (GPOSs) on separate cores of a single multicore processor to create systems that once required multiple hardware platforms. The benefit is a reduction in cost, size, and complexity.
A typical embedded system comprises dedicated subsystems performing functions such as real-time control, data acquisition, and a human-machine interface (HMI). Frequently, a mix of processor architectures is used to construct such a system: DSPs, microcontrollers, and general-purpose microprocessors.
The inefficiencies of working with multiple support environments and programming models impacts time-to-market and long-term support costs. Building systems with multiple circuit cards, power supplies, memories, and I/O interfaces to support the different processors adversely impacts system component and manufacturing costs.
If time and money are important, it makes much more sense to implement multiprocessing systems on a single computing platform, where the different operating environments are given their own dedicated processor cores.
Getting the most processing efficiency from a multicore platform is not trivial, however, because access to some hardware resources must be shared between the operating environments. The key to supporting a diverse mix of real-time and general-purpose OSs on the individual cores of a multicore processor is to use a real-time operating environment that supports virtualization.THE ROLE OF VIRTUALIZATION Virtualization removes contention for resources in a multi-OS platform, providing the needed isolation between multiple operating environments. Not only does virtualization allow real-time and general-purpose OSs to coexist on neighboring cores, it also enables legacy real-time systems to be integrated with new functionality while incurring a minimal impact on legacy software.
Multicore processors enable system designers to maintain the integrity of their real-time environments. By running on a dedicated core, real-time applications are ensured 100% of the CPU instruction cycles. There is no performance penalty for sharing the platform with a GPOS such as Windows. DSP code typically is written in C, or a C-like language. It can be easily converted to run on a high-performance general-purpose processor, such as an Intel architecture CPU, which includes specialized single-instruction multiple-data (SIMD) instructions to facilitate the implementation of DSP algorithms. Integrated development environments (IDEs) like Microsoft Visual Studio make possible the development of real-time and general-purpose applications using a single set of tools.
The result is systems that are easier to maintain and enhance. Also, the performance of these systems can be extended in many cases by simply moving to platforms with additional processor cores. Newer and cheaper I/O subsystems can be constructed—a benefit of PC market economies of scale (for example, USB, PCI Express, and Ethernet).
Combining multiple operating environments on a multicore processor has a dramatic impact on realtime performance metrics, such as interrupt latency, when compared to multi-OS platforms that must share a single CPU.
Interrupt latencies that measure in the 10- to 30-µs range on single-core systems are reduced to 1 to 3 µs on equivalent- speed dual-core systems. With such low latencies, real-time control loops can execute in the 50- to 200-µs range with very high precision while simultaneously supporting a GPOS, such as Windows, on the same hardware platform.REAL-TIME AND VIRTUALIZATION The net gains from the application of real-time virtual-machine technology on multicore processor platforms include the elimination of redundant computer and communication hardware, faster communication and coordination between RTOS and GPOS subsystems, improved reliability and robustness, reuse of proven legacy applications, and simplified development and debugging. The result is a bright future for embedded system developers.