Design
Chris Grujon of TenAsys explores and discusses multicore machinations
OEM products that incorporate real-time technology are complex to develop and validate to a point where they are deemed stable enough to release into the market. Nobody wants a robot to start behaving erratically on the manufacturing floor because of a software bug that wasn’t detected due to insufficient testing and validation of the code. Often, the key to being able to deploy new products rapidly is to use as much of an existing, proven code base as possible.
EngiReal-time application software is by its very nature tied to the outside world, and the controlling application must have unfettered access to the system elements that it is controlling and monitoring in order to respond in a deterministic manner. Distributing application components arbitrarily across several cores of a processor may not deliver the level of access and control that a real-time application needs to run as it was designed.
INtime Distributed RTOS and INtime for Windows solve this problem using two new technologies, embedded virtualisation and global object networking, to enable an application to be scaled with minimal change. With these elements of functionality, software applications can be moved from a deeply embedded single processor environment to a multi-function environment on a multicore processor, while maintaining the underlying real-time code as is. INtime for Windows enables the addition of a Windows interface for real-time applications that need to be coupled to an advanced user interface.
##IMAGE_2_C##
Figure 1. Leveraging existing code reduces cost and risk as multicores increase performance.
Virtualisation
Embedded virtualisation allows the distribution of an application across the cores of a multicore processor while partitioning essential components such as memory, I/O and interrupts and associating them with the relevant portions of an application. The result is that an application that was initially loaded on one CPU (Figure 2a) can be distributed across several cores of a multicore processor (Figure 2b). I/Os and their associated interrupts (where hardware allows, some interrupts are shared among several I/O devices) are allocated to the relevant portion of the application such that interrupt activity from one portion of the code running on one core doesn’t interrupt a portion of the application that is running on another core.
INtime for Windows adds the ability to run Microsoft Windows on its own core while the real-time portions of an application run on other cores (Figure 2c). In this configuration it is possible to run an advanced user interface alongside control and data acquisition functions without affecting the real-time aspect of the application. As with the partitioned real-time applications, Windows can have its associated I/Os allocated to it, too.
##IMAGE_3_C##
Figure2. Application partitioning onto multicore processors
Global object networking
After having partitioned an application to run on individual cores, there is the need for those portions to communicate with each other. TenAsys’ global object networking facility, GOBSnet, provides that capability (Figure 2d). It does so with the addition of a few instructions whose functions are handled by the INtime RTOS to ensure that the deterministic aspects of the application are maintained and that the application executes just as if it were running on one CPU. Windows applications, when using INtime for Windows, communicate with INtime RTOS applications using GOBSnet via a Windows API.