DeNovo: A Software-Driven Rethinking of the Memory Hierarchy
In the brave new post-Dennard-scaling world, the computing industry has chosen to scale the power wall by supporting parallelism and heterogeneity. Unfortunately, the resulting systems are complex and inefficient in both software and hardware. To tame software complexity, much recent research has proposed replacing the currently prevalent "wild shared memory" multicore programming models with a more disciplined approach. The DeNovo project asks the question: if software is more disciplined, can we design a more efficient memory hierarchy? Starting with determinism as a discipline to drive DeNovo, we first show that coherence and communication architectures that exploit this discipline can be far more complexity-, performance-, and energy-efficient than today's largely software-oblivious memory hierarchies. Armed with an understanding of how to eliminate today's inefficiencies, we then show that DeNovo's benefits can be achieved even for non-deterministic applications, including those relying on arbitrary unstructured synchronization. Finally, we show that the DeNovo vision also naturally applies to heterogeneous systems which are already programmed in more disciplined environments. We show how DeNovo unifies the heterogeneous memory components in such systems (e.g., scratchpads, caches, FIFOs) to provide an efficient, globally addressable, coherent shared memory space while still benefiting from the specialization afforded by the diverse structures. In summary, the answer to the original question driving DeNovo increasingly appears to be "yes!"