Processor performance has doubled many many times over during the past 40 years, but the very techniques used to achieve these performance gains have made it increasingly difficult to build software systems with critical properties such as security, determinism, real-time, non-interference, debuggability, and correctness. As we continue our march towards increasingly complex and heterogeneous chips, with more and more hidden state (e.g., predictors, caches, modes, accelerators), these properties are only becoming harder to realize. This fact significantly impedes progress in the development of our most safety-critical embedded systems such as those found in medical, avionic, and automotive systems. What if we started from scratch? What if we reconsidered system architecture from the gates up with an eye, first and foremost, towards the properties necessary to build reliable and trustworthy computing systems? Even if, in the end, we don't want to abandon performance and/or legacy infrastructure, can the lessons learned from this "gates up" thinking then be applied in practice to existing systems?
In the recent 28th Annual IEEE International Conference on Application-specific Systems, Architectures and Processors in Seattle Washington, UCSB Computer Science Professor Tim Sherwood gave a keynote titled "Performance is Overrated or: How I Stopped Worrying and Learned to Love Slow Hardware". Professor Sherwood described his experience with this approach around two important properties (security and correctness) and his experience transitioning ideas from basic research through to practical commercial products.