M3: A Hardware/Operating System Co Design to Tame Heterogeneous Manycores
In the last decade, the number of available cores increased and heterogeneity grew. In this work, we ask the question whether the design of the current operating systems (OSes) is still appropriate if these trends continue and lead to abundantly available but heterogeneous cores, or whether it forces a fundamental rethinking of how systems are designed. We argue that: 1. hiding heterogeneity behind a common hardware interface unifies, to a large extent, the control and coordination of cores and accelerators in the OS, 2. isolating at the network on chip rather than with processor features (like privileged mode, memory management unit, allows running untrusted code on arbitrary cores, and 3. providing OS services via protocols over the network on chip, instead of via system calls, makes them accessible to arbitrary types of cores as well. In summary, this turns accelerators into first class citizens and enables a single and convenient programming environment for all cores without the need to trust any application. In this paper, we introduce network on chip level isolation, present the design of our microkernel based OS, M3, and the common hardware interface, and evaluate the performance of our prototype in comparison to Linux. A bit surprising, without using accelerators, M3 outperforms Linux in some application level benchmarks by more than a factor of five.