Multitasking Support For Embedded Systems Using Phantom Serializing Compiler
Table of contents
Introduction
The complexity of the software programs in embedded systems is growing rapidly and so are the functionalities and design challenges. There is a dire need for concurrent programming and inherent concurrency in the embedded software domains to achieve the demands. These systems are always designed for a specific purpose, to obtain the requisite performance concerning timing, memory, and power. To provide a specific solution to a customer, appropriate toolchains and cross compilers are supplied along with the embedded processors but to support a multitasking design, an OS (Operating System) support is required for communication and synchronization. Adding an extra OS layer to each processor specific to the consumer needs is a high-cost solution, in terms of money, accuracy, and time. Hence this Phantom compiling method fills the gap of an OS by compiling the multitasking C program to a single-threaded ANSI C program. This single-threaded program will run accurately without the OS and compiled by the existing embedded processor toolchains.
This technical review is based on 2 IEEE papers,1 patent, and 1 technical report about the research results obtained on Phantom Serializing compilers and their contribution to the world of embedded systems.
Working
This research work is based on compiler technology that supports the existing compilers, making them aware of time and task distribution, thus enhancing the embedded system into an OS-independent entity. The compiler’s work is explained with the help of a multithreaded C code, which is divided into non-preemptive code blocks called Atomic Execution Blocks (ABC). All these atomic blocks form an AEB graph and thus are executed by the scheduler present in the Phantom system library. The library also consists of synchronization APIs and specific data structures. IEEE paper on ‘Phantom - A serializing compiler’ gives a detailed explanation of the code partitioning and the parameters to be considered for dividing the code into ABC. The theory also briefly describes the scheduler’s work and how each AEB is scheduled and is converted to a sequential C code. It explains the strategy for clustering and how the compiler searches for the Pareto-Optimal set of partitions with a balanced tradeoff latency, the overhead caused by task switching, and other parameters. IEEE paper on ‘Lightweight Multitasking Support for embedded systems’ gives a brief on the architecture of the compiler with the additional detailed explanation on the memory allocated to the phantomized (partitioned) functions in the stack. These papers show the experimental results on how the serializing compilers are ideal for multithreaded and parallel applications because of their efficiency.
Experimental Results
Evaluation of the phantom approach was done on UltraSPARC-IIe workstation of processor frequency 500MHz, 256Mb RAM and Solaris OS. In case 1, execution time was measured for the same code, with and without the phantom infrastructure, keeping tasks at the same priority. Measurements are taken for various metrics like full, short, and mixed context switch, task creation, mutex lock, and task join. These papers also provide data on the execution time, response time, and multitasking overhead for eight different multitasking applications like multiple client-server applications, classical consumer-producer problems, and other similar multitasking applications. From all the data available for these metrics, the execution time for the Phantom approach is 2 to 3 times faster than standard UNIX/POSIX implementation and reduced response time as well as multitasking overhead.
Conclusion
With the increased competition in the market, the two big potential problems, lowering the cost and giving higher functionality in products, can be met by switching to lesser hardware and more intelligent software. Unlike toolchains, operating systems are not easily available for customized embedded systems. Hence this solution, the phantom serializing compiler is an extremely efficient way of implementing multitasking and more complicated source codes by translating them to a platform-independent single-threaded ANSI-C program, which can be used directly at any target embedded processor, filling the missing gap of an OS.
Cite this Essay
To export a reference to this article please select a referencing style below