Hardware microkernels - a novel method for constructing operating systems for heterogeneous multi-core platforms

Today's standard operating systems (OSes) do not have the proper structure, nor support for executing on heterogeneous multi- and many-core platforms. These deficiencies manifest in symptomatic issues that range from relatively low-level application binary interface (ABI) compatibility problems, to higher-level concerns such as application programmer interface (API) compatibility, synchronization, and caching issues. These issues in turn reflect back up to the programmer through a lack of a standard set of OS services. Non-uniformities in the hardware architecture are also reflected back into the programming model. In total these issues combined break down the most fundamental benefit of modern operating systems; abstracting the differences between hardware platforms under a portable and uniform virtual machine model. This breakdown is disconcerting as historical precedence established during the earlier parallel era in the 1980s showed that without a uniform virtual machine model a strong customer base cannot be established. The extreme difficulty associated with rewriting an application for each new architecture put the use of parallel machines outside the grasp of all but the most proficient computer scientists. Thinking machines went as far as placing a computer scientist on site to work with domain scientists and other users to help port code onto their machine. For the current wave of architecture changes sweeping the general purpose computing domain to not simply repeat history a careful rethinking is required of the very structure of our traditional software protocols stacks, and the hardware primitives on which they are implemented. This rethinking must address both older left over issues from the prior parallel processing era now mixed with new challenges that result from heterogeneous sets of scalable numbers of cores that will expand at a rate following Moore's law. Many of the issues associated with supporting parallel processing on heterogeneous cores can be traced back to both microarchitectures and software protocol stacks developed for single CPU systems. Simply adding additional software abstraction layers on top of lower level software and hardware infrastructure that provide inefficient and incomplete mechanisms for supporting our concurrency models is not a long term solution. In thesis, we explore how operating system methods must change if we are to provide programmers with their familiar uniform virtual machine model across next generation heterogeneous manycores. We observe that meeting this requirement may very well require a shift in the current hardware/software (HW/SW) boundary that has been in existence for over 45 years. Shifting the HW/SW interface may be key to building a common set of OS services that are equally accessible to all components in a heterogeneous system, regardless of differences in instruction-set architecture (ISA), micro-architecture, etc. This may be critical to enable standard parallel programming models and abstractions to be used in heterogeneous systems, and promote portability. Additionally, a HW/SW co-designed OS kernel could provide low-latency system services, providing an efficient base for constructing ultra-scalable many-core platforms.