CS 152 Computer Architecture and Engineering Lecture 19 -- Dynamic Scheduling II 2014-4-3 John Lazzaro (not a prof - “John” is always OK) TA: Eric Love www-inst.eecs.berkeley.edu/~cs152/ Play: CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB Case studies of dynamic execution DEC Alpha 21264: High performance from a relatively simple implementation of a modern instruction set. Short Break Simultaneous Multi-threading: Adapting multi-threading to dynamic scheduling. IBM Power: Evolving dynamic designs over many generations. CS 152 L21: Networks and Routers UC Regents Fall 2006 © UCB DEC Alpha 21164: 4-issue in-order design. 21264: 4-issue out-of-order design. 21264 was 50% to 200% faster in real-world applications. 500 MHz 0.5µ parts for in-order 21164 and out-of-order 21264. 21264 has 55% more transistors than the 21164. The die is 44% larger. 21264 has a 1.7x advantage on integer code, and a 2.7x advantage of floating-point code. 21264 consumes 46% more power than the 21164. Similarly-sized onchip caches (116K vs 128K) In-order 21164 has larger off-chip cache. The Real Difference: Speculation If the ability to recover from mis-speculation is built into an implementation ... it offers the option to add speculative features to all parts of the design. CS 152 L19: Dynamic Scheduling II UC Regents Spring 2014 © UCB 21264 die Separate OoO control for integer and floating point. RISC decode happens in OoO blocks Unlabeled areas devoted to memory system control OoO OoO FP Pipe Int Pipe Int Pipe Fetch and predict I-Cache I-Cache Data Cache Data Cache 21264 pipeline diagram Rename and Issue stages are primary locations of dynamic scheduling logic. Load/store disambiguation support resides in Memory stage. Slot: absorbs delay of long path on last slide. Fetch stage close-up: Each cache line stores predictions of the next line, and the cache way to be fetched. If predictions are correct, fetcher maintains the required 4 instructions/cycle pace. Speculative Rename stage close-up: (1) Allocates new physical registers for destinations, (2) Looks up physical register numbers for sources, (3) Handle rename dependences within the 4 issuing instructions in one clock cycle! For mis-speculation recovery Timestamped. Input: 4 instructions specifying architected registers. Output: 12 physical registers numbers: 1 destination and 2 sources for the 4 instructions to be issued. Recall: malloc() -- free() in hardware The record-keeping shown in this diagram occurs in the rename stage. CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB Issue stage close-up: (1) Newly issued instructions placed in top of queue. (2) Instructions check scoreboard: are 2 sources ready? (3) Arbiter selects 4 oldest “ready” instructions. (4) Update removes these 4 from queue. Input: 4 just-issued instructions, renamed to use physical registers. Scoreboard: Tracks writes to physical registers. Output: The 4 oldest instructions whose 2 source registers are ready for use. Execution close-up: (1) Two copies of register files, to reduce port pressure. (2) Forwarding buses are low-latency paths through CPU. Relies on speculations Latencies, from issue to retirement. Short latencies keep buffers to a reasonable size. Retirement managed here. 8 retirements per cycle can be sustained over short time periods. Peak rate is 11 retirements in a single cycle. Execution unit close-up: (1) Two arbiters: one for top pipes, one for bottom pipes. (2) Instructions statically assigned to top or bottom. (3) Arbiter dynamically selects left or right. Top Top Bottom Thus, 2 dual-issue dynamic machines, not a 4-issue machine. Why? Simplifies arbiter. Performance penalty? A few %. Memory stages close-up: 1st stop: TLB, to convert virtual memory addresses. Loads and stores from execution unit appear as “Cluster 0/1 memory unit” in the diagram below. 3rd stop: Flush STQ to the data cache ... on a miss, place in Miss Address File. (MAF == MHSR) 1 GHz “Double pumped” 2nd stop: Load Queue (LDQ) and Sto Queue (SDQ) each hold 32 instructions, until retiremen ... So we can roll back! LDQ/STQ close-up: Hazards we are trying to prevent: To do so, LDQ and SDQ lists of up to 32 loads and stores, in issued order. When a new load or store arrives, addresses are compared to detect/fix hazards: LDQ/STQ speculation It also marks the load instruction in a predictor, so that future invocations are not speculatively executed. First execution Subsequent execution Designing a microprocessor is a team sport. Below are the author and acknowledgement lists for the papers whose figures I use. micro-architects architect circuits There is no “i” in T-E-A-M ... Break Play: CS 152 L19: Dynamic Scheduling II UC Regents Spring 2014 © UCB Multi-Threading (Dynamic Scheduling) CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB Power 4 (predates Power 5 shown earlier) Single-threaded predecessor to Power 5. 8 execution units in out-of-order engine, each may issue an instruction each cycle. CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB For most apps, most execution units lie idle Observation: Most hardware in an out-of-order CPU concerns physical registers. Could several instruction threads share this hardware? CS 152 L18: Dynamic Scheduling I For an 8-way superscalar. From: Tullsen, Eggers, and Levy, “Simultaneous Multithreading: Maximizing Onchip Parallelism, ISCA 1995. UC Regents Spring 2014 © UCB Simultaneous Multi-threading ... One thread, 8 units Cycle M M FX FX FP FP BR CC Two threads, 8 units Cycle M M FX FX FP FP BR CC 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 M = Load/Store, FX = Fixed Point, FP = Floating Point, BR = Branch, CC = Condition Codes CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB Power 4 Power 5 2 commits (architected register sets) 2 fetch (PC), 2 initial decodes CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB Power 5 data flow ... Why only 2 threads? With 4, one of the shared resources (physical registers, cache, memory bandwidth) would be prone to bottleneck. CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB Power 5 thread performance ... Relative priority of each thread controllable in hardware. For balanced operation, both threads run slower than if they “owned” the machine. CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB Multi-Core CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB Recall: Superscalar utilization by a thread For an 8-way superscalar. CS 152 L18: Dynamic Scheduling I Observation: In many cases, the on-chip cache and DRAM I/O bandwidth is also underutilized by one CPU. So, let 2 cores share them. UC Regents Spring 2014 © UCB Most of Power 5 die is shared hardware Shared Components Core #1 L2 Cache L3 Cache Control Core #2 CS 152 L18: Dynamic Scheduling I DRAM Controller UC Regents Spring 2014 © UCB Core-to-core interactions stay on chip (1) Threads on two cores that use shared libraries conserve L2 memory. CS 152 L18: Dynamic Scheduling I (2) Threads on two cores share memory via L2 cache operations. Much faster than 2 CPUs on 2 chips. UC Regents Spring 2014 © UCB Sun Niagara CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB The case for Sun’s Niagara ... For an 8-way superscalar. CS 152 L18: Dynamic Scheduling I Observation: Some apps struggle to reach a CPI == 1. For throughput on these apps, a large number of single-issue cores is better than a few superscalars. UC Regents Spring 2014 © UCB Niagara (original): 32 threads on one chip 8 cores: Single-issue, 1.2 GHz 6-stage pipeline 4-way multi-threaded Fast crypto support Shared resources: 3MB on-chip cache 4 DDR2 interfaces 32G DRAM, 20 Gb/s 1 shared FP unit GB Ethernet ports Die size: 340 mm² in 90 nm. Power: 50-60 W Sources: Hot Chips, via EE Times, Infoworld. J Schwartz weblog (Sun COO)UC Regents Spring 2014 © UCB CS 152 L18: Dynamic Scheduling I The board that booted Niagara first-silicon Source: J Schwartz weblog (then Sun COO, now CEO) CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB Used in Sun Fire T2000: “Coolthreads” Claim: server uses 1/3 the power of competing servers Web server benchmarks used to position the T2000 in the market. CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB IBM RISC chips, since Power 4 (2001) ... 2014 CS 152 L19: Dynamic Scheduling II UC Regents Spring 2014 © UCB CS 152 L19: Dynamic Scheduling II UC Regents Spring 2014 © UCB Recap: Dynamic Scheduling Three big ideas: register renaming, data-driven detection of RAW resolution, bus-based architecture. Very complex, but enables many things: out-of-order execution, multiple issue, loop unrolling, etc. Has saved architectures that have a small number of registers: IBM 360 floating-point ISA, Intel x86 ISA. CS 152 L18: Dynamic Scheduling I UC Regents Spring 2014 © UCB On Tuesday Epilogue ... Have a good weekend!