Frontiers in Computer Architecture, May 3, 2005 ================================== Architecture can mean two things -------------------------------- * HW/SW interface -- classical definition of architecture * Microarchitecture -- pipelining, branch prediction, caches, ... Design goals for architectures ------------------------------ * Performance * Low Power * Low Cost * Easy to program * Compatibility and longetivity * Security and Reliability Trends ------ * Power consumption is now a first-order constraint - on desktops - definitely for mobile computing -- Laptops, PDAs, smart watches * We are reaching limits of instruction-level parallelism * Increasing use of virtual machines (Java, .NET, DX9 shaders) [aka 'managed code'] - the most important interfaces is the bytecode, not the HW arch - frequent use of dynamic memory allocation - reasons: Trends ------ * Specialization . on a chip - TCP/IP offload, etc. . different markets . Examples: server (Azul, Niagara); desktop; ultra-mobile; cellphone; game console/graphics; ... * Parallelism, even on chip . Why: . only route to peak performance . better power efficiency . lower cost (via better yield using floorsweeping) . Leads to: . change in programming model . focus on interconnect and memory system, not core . user-level architecture changes to support communication and synchronization * Architectural support for JIT/managed code . garbage collection . multithreading . secure code . etc. * Power efficiency . this is highly microarchitectural . device properties; voltages; transistor sizes; pipeline depths; etc. . clock gating, etc. * Dealing with device unreliability * Dealing with device variability AS AN ARCHITECT --------------- * System layers are breaking down: . Learn more about power . Learn more about applications (for parallelism) . Learn more about parallelism primitives AS A PROGRAMMER --------------- * Learn more about parallelism * Learn more about managed code