Abstract
Embedded computing is characterised by the limited availability of computing resources. Further, embedded systems are often used in safety-critical applications with real-time constraints. Thus, the software development has to follow rigorous procedures to minimise the risk of system failures. However, besides the inherent application complexities, there is also an increased technology-based complexity due to the shift to concurrent programming of multi-core systems. For such systems it is quite challenging to develop safe and resource-efficient systems.
In this paper we give a plea for the need of better software development tools to cope with this challenge. For example, we outline how compilers can help to simplify the writing of fault-tolerant and robust software, which keeps the application code more compact, comprehensive, and maintainable. We take a rather extreme stand by promoting a functional programming approach. This functional programming paradigm reduces the complexity of program analysis and thus allows for more efficient and powerful techniques. We will implement an almost transparent support for robustness within the SaC research compiler, which accepts a C-like functional program as input. Compared to conventional approaches in the field of automatic software-controlled resilience, our functional setting will allow for lower overhead, making the approach interesting for embedded computing as well as for high-performance computing.
The research leading to these results has received funding from the IST FP-7 research project ”Asynchronous and Dynamic Virtualization through performance ANalysis to support Concurrency Engineering (ADVANCE)”.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Avižienis, A., Laprie, J.C., Randell, B., Landwehr, C.: Basic concepts and taxonomy of dependable and secure computing. IEEE Transactions on Dependable and Secure Computing 1(1), 11–33 (2004)
Mikolasek, V.: Dependability and robustness: State of the art and challenges. In: Proc. Workshop on Software Technologies for Future Dependable Distributed Systems, Tokyo, Japan (March 2009)
RTCA: Software considerations in airborne systems and equipment certification. RTCA/DO-178B (1992)
ISO/DIS: Road vehicles – functional safety. ISO/DIS standard 26262
Treaster, M.: A survey of fault-tolerance and fault-recovery techniques in parallel systems. ACM Computing Research Repository (CoRR) abs/cs/0501002 (2005)
Reis, G.A., Chang, J., Vachharajani, N., Rangan, R., August, D.I.: SWIFT: Software implemented fault tolerance. In: Proc. 3rd International Symposium on Code Generation and Optimization (CGO) (March 2005)
Chang, J., Reis, G.A., August, D.I.: Automatic instruction-level software-only recovery. IEEE Micro 27(1), 36–47 (2007)
Grelck, C., Scholz, S.B.: SAC: A functional array language for efficient multithreaded execution. International Journal of Parallel Programming 34(4), 383–427 (2006)
Grelck, C.: Shared memory multiprocessor support for functional array processing in SAC. Journal of Functional Programming 15(3), 353–401 (2005)
Ademaj, A.: Slightly-off-specification failures in the time-triggered architecture. In: Proc. 7th IEEE International Workshop on High Level Design Validation and Test, Cannes, France, pp. 7–12 (October 2002)
Mikolasek, V.: Robustness in complex systems - state of the art report. Research Report 26/2008, Technische Universität Wien, Institut für Technische Informatik, Treitlstr. 1-3/182-1, 1040 Vienna, Austria (2008)
Obermaisser, R., Kopetz, H.: From ARTEMIS requirements to a cross-domain embedded system architecture. In: Proc. Embedded Real Time Software and Systems, Toulouse, France (May 2010)
Horvitz, E.J.: Reasoning about beliefs and actions under computation resource constraints. In: Proc. Workshop on Uncertainty in Artificial Intelligence, Seattle, Washington (1987)
Boddy, M., Dean, T.: Solving time-dependent planning problems. In: Proc. 11th International Joint Conference on Artificial Intelligence (August 1989)
Grelck, C., Scholz, S.B., Shafarenko, A.: A Gentle Introduction to S-Net: Typed Stream Processing and Declarative Coordination of Asynchronous Components. Parallel Processing Letters 18(2), 221–237 (2008)
Shafarenko, A., Scholz, S.B., Grelck, C.: Streaming networks for coordinating data-parallel programs. In: Virbitskaite, I., Voronkov, A. (eds.) PSI 2006. LNCS, vol. 4378, pp. 451–455. Springer, Heidelberg (2007)
Kirner, R., Scholz, S.B., Penczek, F., Shafarenko, A.: PS-NET - a predictable typed coordination language for stream processing in resource-constrained environments. In: Proc. 1st Int’l Conference on Computational Logics, Algebras, Programming, Tools, and Benchmarking (submitted, November 2010)
Vallee, G., Engelmann, C., Tikotekar, A., Naughton, T., Charoenpornwattana, K., Leangsuksun, C., Scott, S.L.: A framework for proactive fault tolerance. In: Proc. 3rd Int’l Converence of Availability, Reliability and Security, Barcelona, Spain, pp. 659–664 (May 2008)
Lee, C., Lee, D., Koo, J., Chung, J.: Proactive fault detection schema for enterprise information system using statistical process control. In: Proc. Conference on Symposium on Human Interface 2009, pp. 113–122. Springer, Heidelberg (2009)
Wang, C., Mueller, F., Engelmann, C., Scott, S.L.: Proactive process-level live migration in hpc environments. In: Proc. ACM/IEEE conference on Supercomputing (SC 2008), Piscataway, NJ, USA. IEEE Press, Los Alamitos (2008)
Elnozahy, E.N.M., Alvisi, L., Wang, Y.M., Johnson, D.B.: A survey of rollback-recovery protocols in message-passing systems. ACM Compututing Surveys 34(3), 375–408 (2002)
Choi, S.E., Deitz, S.J.: Compiler support for automatic checkpointing. In: Proc. 16th Annual International Symposium on High Performance Computing Systems and Applications, Washington, DC, USA, p. 213. IEEE Computer Society, Los Alamitos (2002)
Dinan, J., Singri, A., Sadayappan, P., Krishnamoorthy, S.: Selective recovery from failures in a task parallel programming model. In: Proc. IEEE International Symposium on Cluster Computing and the Grid, pp. 709–714. IEEE Computer Society, Los Alamitos (2010)
Harris, T., Marlow, S., Peyton-Jones, S., Herlihy, M.: Composable memory transactions. In: Proc. 10th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pp. 48–60. ACM, New York (2005)
Ramkumar, B., Strumpen, V.: Portable checkpointing for heterogeneous archtitectures. In: Proc. 27th International Symposium on Fault-Tolerant Computing (FTCS 1997), Washington, DC, USA, p. 58. IEEE Computer Society, Los Alamitos (1997)
Hinze, R.: A new approach to generic functional programming. In: Proc. 27th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 119–132. ACM Press, New York (2000)
Scholz, S.B.: Single Assignment C — efficient support for high-level array operations in a functional setting. Journal of Functional Programming 13(6), 1005–1059 (2003)
Choi, S.E., Deitz, S.J.: Compiler support for automatic checkpointing. In: HPCS 2002: Proceedings of the 16th Annual International Symposium on High Performance Computing Systems and Applications, Washington, DC, USA, p. 213. IEEE Computer Society, Los Alamitos (2002)
Harris, T., Marlow, S., Peyton-Jones, S., Herlihy, M.: Composable memory transactions. In: PPoPP 2005: Proceedings of the Tenth ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pp. 48–60. ACM, New York (2005)
Grelck, C., van Deurzen, T., Herhut, S., Scholz, S.B.: An Adaptive Compilation Framework for Generic Data-Parallel Array Programming. In: 15th Workshop on Compilers for Parallel Computing (CPC 2010), Vienna University of Technology, Vienna, Austria (2010)
Patai, G., Hanák, P.: Embedded functional programming in Hume. In: IASTED on Software Engineering, Innsbruck, Austria, pp. 328–333. ACTA Press (2007)
Hammond, K., Michaelson, G.: The design of Hume: A high-level language for the real-time embedded systems domain. In: Lengauer, C., Batory, D., Consel, C., Odersky, M. (eds.) Domain-Specific Program Generation. LNCS, vol. 3016, pp. 127–142. Springer, Heidelberg (2004)
Hammond, K., Michaelson, G.: Hume: A domain-specific language for real-time embedded systems. In: Pfenning, F., Smaragdakis, Y. (eds.) GPCE 2003. LNCS, vol. 2830, pp. 37–56. Springer, Heidelberg (2003)
MISRA, T.M.I.S.R.A.: MISRA-C 2004: Guidelines for the Use of the C Language in Critical Systems. MISRA (October 2004), ISBN: 0-9524156-4-X (pdf version)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2010 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kirner, R., Herhut, S., Scholz, SB. (2010). Compiler-Support for Robust Multi-core Computing. In: Margaria, T., Steffen, B. (eds) Leveraging Applications of Formal Methods, Verification, and Validation. ISoLA 2010. Lecture Notes in Computer Science, vol 6415. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-16558-0_6
Download citation
DOI: https://doi.org/10.1007/978-3-642-16558-0_6
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-16557-3
Online ISBN: 978-3-642-16558-0
eBook Packages: Computer ScienceComputer Science (R0)