Design versus Performance: From Giotto via the Embedded Machine to Selfie
Engineering systems software is considered difficult. Performance considerations often dominate the overall development process resulting in significant code complexity. In our experience, however, completely ignoring performance, at least originally, may result in valuable insight and sometimes even more rigorous development methodologies that may still enable high performance designs. We discuss three examples developed over a period of around fifteen years: (1) Giotto, a real-time programming language based on logical execution time (LET), (2) the Embedded Machine, a virtual machine making real-time code portable including compiled Giotto programs, and (3) Selfie, a fully self-contained system of a tiny self-compiling C compiler, a tiny self-executing MIPS emulator targeted by the compiler, and a tiny self-hosting hypervisor virtualizing the emulator. Giotto shows how being slow can be leveraged to avoid non-determinism in real-time code. The Embedded Machine is an interpreter that may be slow but nevertheless makes code portable that appeared to be intrinsically non-portable. Selfie, finally, reveals that an operating system is a simple interpreter until people wanted speed.
|Design versus Performance: From Giotto via the Embedded Machine to Selfie (LCTES17-Selfie.pdf)
Christoph Kirsch is Professor at the Department of Computer Sciences of the University of Salzburg, Austria. He received his Dr.Ing. degree from Saarland University, Saarbrücken, Germany, in 1999 while at the Max Planck Institute for Computer Science. From 1999 to 2004 he worked as Postdoctoral Researcher at the Department of Electrical Engineering and Computer Sciences of the University of California, Berkeley. He later returned to Berkeley as Visiting Scholar (2008-2013) and Visiting Professor (2014) at the Department of Civil and Environmental Engineering as part of a collaborative research effort in Cyber-Physical Systems. His research interests are in concurrent programming, memory management, virtualization, and automated theorem proving. Dr. Kirsch co-invented embedded programming languages and systems such as Giotto, HTL, and the Embedded Machine, and more recently co-designed high-performance, multicore-scalable concurrent data structures and memory management systems. He co-founded the International Conference on Embedded Software (EMSOFT) and served as ACM SIGBED chair from 2011 until 2013 and ACM TODAES associate editor from 2011 until 2014. He is currently associate editor of IEEE TCAD.