100 likes | 128 Views
Microarchitecture is crucial for multicore systems, but programmers shouldn't need to grasp its complexities. Learn about different chip approaches, core types, and performance aspects. Discover the necessary components, like interconnects, caches, and memory controllers, for a viable chip design. An interface must be specified for both hardware-savvy users and those relying on runtime systems. This redefinition of the hierarchy promises a vibrant future for microarchitecture.
E N D
Microarchitecture is Dead AND We must have a multicore interface that does not require programmers to understand what is going on underneath
What is Microarchitecture? • It is about the implementation • It is transparent to the software • Ergo, if we really want to protect the programmer from seriously understanding the multi-core chip, • Microarchitecture must be very much alive and well
First, a few words about the multi-core chip: The following figure was first published in a UT Tech Report: “ACMP: Balancing Hardware Efficiency and Programmer Efficiency,” TR-HPS-2007-001, Feb, 2007 (Actually, it was first submitted to ISCA in June, 2006, and was rejected )
The Asymmetric Chip Multiprocessor (ACMP) Large core Largecore Large core Largecore Largecore ACMP Approach “Tile-Large” Approach “Niagara” Approach Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore Niagara-likecore
Large core vs. Small Core LargeCore SmallCore • Out-of-order • Wide fetch e.g. 4-wide • Deeper pipeline • Aggressive branch predictor (e.g. hybrid) • Many functional units • Trace cache • Memory dependence speculation • In-order • Narrow Fetch e.g. 2-wide • Shallow pipeline • Simple branch predictor (e.g. Gshare) • Few functional units
To make that chip viable, a lot has to happen: • The interconnect among the cores • The shared resources • Caches (and cache coherence) • Memory Controller(s) • Prefetch mechanisms • Specification of the few heavyweight cores and the many mickey-mouse cores • Performance improvement of the heavyweight core • Specification of accelerators and their interconnect to the cores • Specification of the interface to the software (ISA)
Actually, • I don’t believe the Microarchitecture can do it alone • BUT that does not reduce the importance of the microarchitecture • Everything on the previous slide will be needed • PLUS at least two interfaces: • One for users who can understand the hardware, and • One for the run-time system to smooth the way for users who do not understand the hardware • That will mean breaking the transformation hierarchy
Problem Algorithm Program ISA (Instruction Set Arch) Microarchitecture Circuits Electrons
and that means (in my view) A vibrant future for Microarchitecture