CENG 3420 Computer Organization and Design. Lecture 08: Cache Review. Bei Yu

Similar documents
CENG 3420 Computer Organization and Design. Lecture 08: Memory - I. Bei Yu

CSE 431 Computer Architecture Fall Chapter 5A: Exploiting the Memory Hierarchy, Part 1

Page 1. Memory Hierarchies (Part 2)

CSF Improving Cache Performance. [Adapted from Computer Organization and Design, Patterson & Hennessy, 2005]

EE 4683/5683: COMPUTER ARCHITECTURE

14:332:331. Week 13 Basics of Cache

Course Administration

14:332:331. Week 13 Basics of Cache

Chapter 5. Large and Fast: Exploiting Memory Hierarchy

ECE7995 (6) Improving Cache Performance. [Adapted from Mary Jane Irwin s slides (PSU)]

CSF Cache Introduction. [Adapted from Computer Organization and Design, Patterson & Hennessy, 2005]

Chapter 5. Large and Fast: Exploiting Memory Hierarchy

EEC 170 Computer Architecture Fall Cache Introduction Review. Review: The Memory Hierarchy. The Memory Hierarchy: Why Does it Work?

CS3350B Computer Architecture

Memory Hierarchy Design (Appendix B and Chapter 2)

EEC 170 Computer Architecture Fall Improving Cache Performance. Administrative. Review: The Memory Hierarchy. Review: Principle of Locality

ELEC 5200/6200 Computer Architecture and Design Spring 2017 Lecture 7: Memory Organization Part II

Agenda. Recap: Components of a Computer. Agenda. Recap: Cache Performance and Average Memory Access Time (AMAT) Recap: Typical Memory Hierarchy

ECE7995 (4) Basics of Memory Hierarchy. [Adapted from Mary Jane Irwin s slides (PSU)]

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Caches Part 2

Donn Morrison Department of Computer Science. TDT4255 Memory hierarchies

EECS151/251A Spring 2018 Digital Design and Integrated Circuits. Instructors: John Wawrzynek and Nick Weaver. Lecture 19: Caches EE141

Memory Hierarchy. ENG3380 Computer Organization and Architecture Cache Memory Part II. Topics. References. Memory Hierarchy

ELEC 5200/6200 Computer Architecture and Design Spring 2017 Lecture 6: Memory Organization Part I

CENG3420 Lecture 08: Memory Organization

Caches Part 1. Instructor: Sören Schwertfeger. School of Information Science and Technology SIST

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Caches Part 2

ECE331: Hardware Organization and Design

Textbook: Burdea and Coiffet, Virtual Reality Technology, 2 nd Edition, Wiley, Textbook web site:

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Caches Part 1

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Caches Part 2

10/16/17. Outline. Outline. Typical Memory Hierarchy. Adding Cache to Computer. Key Cache Concepts

Chapter 5. Large and Fast: Exploiting Memory Hierarchy

Chapter 7 Large and Fast: Exploiting Memory Hierarchy. Memory Hierarchy. Locality. Memories: Review

CpE 442. Memory System

CS152 Computer Architecture and Engineering Lecture 17: Cache System

CS 61C: Great Ideas in Computer Architecture (Machine Structures)

CS 61C: Great Ideas in Computer Architecture Caches Part 2

Chapter Seven. Large & Fast: Exploring Memory Hierarchy

Memory Technology. Caches 1. Static RAM (SRAM) Dynamic RAM (DRAM) Magnetic disk. Ideal memory. 0.5ns 2.5ns, $2000 $5000 per GB

CS161 Design and Architecture of Computer Systems. Cache $$$$$

Memory Technologies. Technology Trends

Adapted from instructor s supplementary material from Computer. Patterson & Hennessy, 2008, MK]

Review: Performance Latency vs. Throughput. Time (seconds/program) is performance measure Instructions Clock cycles Seconds.

registers data 1 registers MEMORY ADDRESS on-chip cache off-chip cache main memory: real address space part of virtual addr. sp.

EN1640: Design of Computing Systems Topic 06: Memory System

CS 61C: Great Ideas in Computer Architecture. The Memory Hierarchy, Fully Associative Caches

Improving Cache Performance

CS 61C: Great Ideas in Computer Architecture. Direct Mapped Caches

CS 61C: Great Ideas in Computer Architecture (Machine Structures)

CSE 2021: Computer Organization

Memory Hierarchy: Caches, Virtual Memory

Chapter 5. Large and Fast: Exploiting Memory Hierarchy

Locality. Cache. Direct Mapped Cache. Direct Mapped Cache

CPS101 Computer Organization and Programming Lecture 13: The Memory System. Outline of Today s Lecture. The Big Picture: Where are We Now?

Chapter 5A. Large and Fast: Exploiting Memory Hierarchy

Instructors: Randy H. Katz David A. PaGerson hgp://inst.eecs.berkeley.edu/~cs61c/fa10. 10/4/10 Fall Lecture #16. Agenda

CMPT 300 Introduction to Operating Systems

CSE 2021: Computer Organization

Memory. Lecture 22 CS301

Memory Hierarchies. Instructor: Dmitri A. Gusev. Fall Lecture 10, October 8, CS 502: Computers and Communications Technology

CS152 Computer Architecture and Engineering Lecture 16: Memory System

Improving Cache Performance

Chapter 7-1. Large and Fast: Exploiting Memory Hierarchy (part I: cache) 臺大電機系吳安宇教授. V1 11/24/2004 V2 12/01/2004 V3 12/08/2004 (minor)

ECE ECE4680

registers data 1 registers MEMORY ADDRESS on-chip cache off-chip cache main memory: real address space part of virtual addr. sp.

COSC3330 Computer Architecture Lecture 19. Cache

Agenda. Cache-Memory Consistency? (1/2) 7/14/2011. New-School Machine Structures (It s a bit more complicated!)

MIPS) ( MUX

Advanced Memory Organizations

Transistor: Digital Building Blocks

Chapter 5 Large and Fast: Exploiting Memory Hierarchy (Part 1)

ECE468 Computer Organization and Architecture. Memory Hierarchy

LECTURE 11. Memory Hierarchy

CPE 631 Lecture 04: CPU Caches

The Memory Hierarchy & Cache Review of Memory Hierarchy & Cache Basics (from 350):

Caches and Memory Hierarchy: Review. UCSB CS240A, Fall 2017

Caches and Memory Hierarchy: Review. UCSB CS240A, Winter 2016

Memory Hierarchy, Fully Associative Caches. Instructor: Nick Riasanovsky

Chapter Seven. Memories: Review. Exploiting Memory Hierarchy CACHE MEMORY AND VIRTUAL MEMORY

V. Primary & Secondary Memory!

Chapter 5. Large and Fast: Exploiting Memory Hierarchy

CS3350B Computer Architecture

Computer Organization and Structure. Bing-Yu Chen National Taiwan University

10/19/17. You Are Here! Review: Direct-Mapped Cache. Typical Memory Hierarchy

Modern Computer Architecture

CPU issues address (and data for write) Memory returns data (or acknowledgment for write)

Caches. Hiding Memory Access Times

CS 61C: Great Ideas in Computer Architecture (Machine Structures) Caches Part 3

data block 0, word 0 block 0, word 1 block 1, word 0 block 1, word 1 block 2, word 0 block 2, word 1 block 3, word 0 block 3, word 1 Word index cache

ECE 30 Introduction to Computer Engineering

Chapter 5. Large and Fast: Exploiting Memory Hierarchy

Computer Architecture Computer Science & Engineering. Chapter 5. Memory Hierachy BK TP.HCM

Computer Systems Laboratory Sungkyunkwan University

COMPUTER ORGANIZATION AND DESIGN The Hardware/Software Interface. 5 th. Edition. Chapter 5. Large and Fast: Exploiting Memory Hierarchy

Memory Hierarchy. Reading. Sections 5.1, 5.2, 5.3, 5.4, 5.8 (some elements), 5.9 (2) Lecture notes from MKP, H. H. Lee and S.

Lecture 12. Memory Design & Caches, part 2. Christos Kozyrakis Stanford University

Memory Hierarchy. Caching Chapter 7. Locality. Program Characteristics. What does that mean?!? Exploiting Spatial & Temporal Locality

Chapter 5. Large and Fast: Exploiting Memory Hierarchy

Memory Technology. Chapter 5. Principle of Locality. Chapter 5 Large and Fast: Exploiting Memory Hierarchy 1

Transcription:

CENG 3420 Computer Organization and Design Lecture 08: Cache Review Bei Yu CEG3420 L08.1 Spring 2016

A Typical Memory Hierarchy q Take advantage of the principle of locality to present the user with as much memory as is available in the cheapest technology at the speed offered by the fastest technology On-Chip Components Control Datapath RegFile ITLB DTLB Instr Data Cache Cache Second Level Cache (SRAM) Main Memory (DRAM) Secondary Memory (Disk) Speed (%cycles): ½ s 1 s 10 s 100 s 10,000 s Size (bytes): 100 s 10K s M s G s T s Cost: highest lowest CEG3420 L08.2 Spring 2016

The Memory Hierarchy: Why Does it Work? q Temporal Locality (locality in time) If a memory location is referenced then it will tend to be referenced again soon Þ Keep most recently accessed data items closer to the processor q Spatial Locality (locality in space) If a memory location is referenced, the locations with nearby addresses will tend to be referenced soon Þ Move blocks consisting of contiguous words closer to the processor CEG3420 L08.3 Spring 2016

Classical SRAM Organization bit (data) lines R o w D e c o d e r RAM Cell Array Each intersection represents a 6-T SRAM cell word (row) line row address Column Selector & I/O Circuits column address data bit or word One memory row holds a block of data, so the column address selects the requested bit or word from that block CEG3420 L08.4 Spring 2016

Classical SRAM Organization q Latch based memory Memory$Data$In WE Write$bitlines D D.$.$. D m SR-Latch Memory$WriteAddress n Write$Address$Decoder.$.$..$.$. D D D.$.$. D D.$.$. D Read$bitlines Read$word$line Write$word$line.$.$. Read$Address$Decoder n Memory$Read$Address D Q Gated D8latch WE m Memory$Data$Out CEG3420 L08.5 Spring 2016

Classical DRAM Organization bit (data) lines R o w D e c o d e r row address RAM Cell Array Column Selector & I/O Circuits data bit data bit data bit Each intersection represents a 1-T DRAM cell word (row) line column address The column address selects the requested bit from the row in each plane CEG3420 L08.6 Spring 2016

Classical DRAM Operation q DRAM Organization: N rows x N column x M-bit Column Address N cols Read or Write M-bit at a time Each M-bit access requires a RAS / CAS cycle N rows DRAM Row Address Cycle Time M-bit Output M bit planes 1 st M-bit Access 2 nd M-bit Access RAS CAS Row Address Col Address Row Address Col Address CEG3420 L08.7 Spring 2016

Page Mode DRAM Operation q Page Mode DRAM N x M SRAM to save a row Column Address N cols q After a row is read into the SRAM register Only CAS is needed to access other M-bit words on that row RAS remains asserted while CAS is toggled Cycle Time N rows DRAM N x M SRAM M-bit Output Row Address M bit planes 1 st M-bit Access 2 nd M-bit 3 rd M-bit 4 th M-bit RAS CAS Row Address Col Address Col Address Col Address Col Address CEG3420 L08.8 Spring 2016

Memory Systems that Support Caches q The off-chip interconnect and memory architecture can affect overall system performance in dramatic ways on-chip CPU One word wide organization (one word wide bus and one word wide memory) q Assume 32-bit data & 32-bit addr per cycle Cache bus DRAM Memory q 1. 1 clock cycle to send the addr 2. 15 clock cycles to get the 1 st word in the block from DRAM, 5 clock cycles for 2 nd, 3 rd, 4 th words (column access time) 3. 1 clock cycle to return a word of data Memory-Bus to Cache bandwidth l number of bytes accessed from memory and transferred to cache/cpu per clock cycle CEG3420 L08.9 Spring 2016

One Word Wide Bus, One Word Blocks on-chip CPU Cache bus DRAM Memory q If the block size is one word, then for a memory access due to a cache miss, the pipeline will have to stall for the number of cycles required to return one data word from memory cycle to send address cycles to read DRAM cycle to return data total clock cycles miss penalty q Number of bytes transferred per clock cycle (bandwidth) for a single miss is bytes per memory bus clock cycle CEG3420 L08.10 Spring 2016

One Word Wide Bus, One Word Blocks on-chip CPU Cache bus DRAM Memory q If the block size is one word, then for a memory access due to a cache miss, the pipeline will have to stall for the number of cycles required to return one data word from memory 1 15 1 17 cycle to send address cycles to read DRAM cycle to return data total clock cycles miss penalty q Number of bytes transferred per clock cycle (bandwidth) for a single miss is 4/17 = 0.235 bytes per memory bus clock cycle CEG3420 L08.11 Spring 2016

One Word Wide Bus, Four Word Blocks on-chip CPU Cache bus q What if the block size is four words and each word is in a different DRAM row? cycle to send 1 st address cycles to read DRAM cycles to return last data word total clock cycles miss penalty DRAM Memory q Number of bytes transferred per clock cycle (bandwidth) for a single miss is bytes per clock CEG3420 L08.12 Spring 2016

One Word Wide Bus, Four Word Blocks on-chip CPU Cache q What if the block size is four words and each word is in a different DRAM row? 1 4 x 15 = 60 1 62 cycle to send 1 st address cycles to read DRAM cycles to return last data word total clock cycles miss penalty bus DRAM Memory 15 cycles 15 cycles 15 cycles 15 cycles q Number of bytes transferred per clock cycle (bandwidth) for a single miss is (4 x 4)/62 = 0.258 bytes per clock CEG3420 L08.13 Spring 2016

One Word Wide Bus, Four Word Blocks on-chip CPU Cache bus q What if the block size is four words and all words are in the same DRAM row? cycle to send 1 st address cycles to read DRAM cycles to return last data word total clock cycles miss penalty DRAM Memory q Number of bytes transferred per clock cycle (bandwidth) for a single miss is bytes per clock CEG3420 L08.14 Spring 2016

One Word Wide Bus, Four Word Blocks on-chip CPU Cache q What if the block size is four words and all words are in the same DRAM row? 1 15 + 3*5 = 30 1 32 cycle to send 1 st address cycles to read DRAM cycles to return last data word total clock cycles miss penalty bus DRAM Memory 15 cycles 5 cycles 5 cycles 5 cycles q Number of bytes transferred per clock cycle (bandwidth) for a single miss is (4 x 4)/32 = 0.5 bytes per clock CEG3420 L08.15 Spring 2016

Interleaved Memory, One Word Wide Bus on-chip CPU Cache q For a block size of four words cycle to send 1 st address cycles to read DRAM banks cycles to return last data word total clock cycles miss penalty bus DRAM DRAM DRAM DRAM Memory Memory Memory Memory bank 0 bank 1 bank 2 bank 3 q Number of bytes transferred per clock cycle (bandwidth) for a single miss is bytes per clock CEG3420 L08.16 Spring 2016

Interleaved Memory, One Word Wide Bus on-chip CPU Cache q For a block size of four words 1 15 + 3 = 18 1 20 cycle to send 1 st address cycles to read DRAM banks cycles to return last data word total clock cycles miss penalty bus DRAM DRAM DRAM DRAM Memory Memory Memory Memory bank 0 bank 1 bank 2 bank 3 15 cycles 15 cycles 15 cycles 15 cycles q Number of bytes transferred per clock cycle (bandwidth) for a single miss is (4 x 4)/20 = 0.8 bytes per clock CEG3420 L08.17 Spring 2016

Caching: A Simple First Example Cache Index Valid 00 01 10 11 Tag Q1: Is it there? Data Compare the cache tag to the high order 2 memory address bits to tell if the memory block is in the cache 0000xx 0001xx 0010xx 0011xx 0100xx 0101xx 0110xx 0111xx 1000xx 1001xx 1010xx 1011xx 1100xx 1101xx 1110xx 1111xx Main Memory One word blocks Two low order bits define the byte in the word (32b words) Q2: How do we find it? Use next 2 low order memory address bits the index to determine which cache block (i.e., modulo the number of blocks in the cache) (block address) modulo (# of blocks in the cache) CEG3420 L08.18 Spring 2016

Caching: A Simple First Example Cache Index Valid 00 01 10 11 Tag Q1: Is it there? Data Compare the cache tag to the high order 2 memory address bits to tell if the memory block is in the cache 0000xx 0001xx 0010xx 0011xx 0100xx 0101xx 0110xx 0111xx 1000xx 1001xx 1010xx 1011xx 1100xx 1101xx 1110xx 1111xx Main Memory One word blocks Two low order bits define the byte in the word (32b words) Q2: How do we find it? Use next 2 low order memory address bits the index to determine which cache block (i.e., modulo the number of blocks in the cache) (block address) modulo (# of blocks in the cache) CEG3420 L08.19 Spring 2016

Direct Mapped Cache q Consider the main memory word reference string Start with an empty cache - all blocks initially marked as not valid 0 1 2 3 4 3 4 15 0 1 2 3 4 3 4 15 CEG3420 L08.20 Spring 2016

Direct Mapped Cache q Consider the main memory word reference string Start with an empty cache - all blocks initially marked as not valid 0 1 2 3 4 3 4 15 0 miss 1 miss 2 miss 3 miss 00 Mem(0) 00 Mem(0) 00 Mem(0) 00 Mem(0) 00 Mem(1) 00 Mem(1) 00 Mem(1) 00 Mem(2) 00 Mem(2) 00 Mem(3) 01 4 miss 3 hit 4 hit 15 miss 4 00 Mem(0) 01 Mem(4) 01 Mem(4) 01 Mem(4) 00 Mem(1) 00 Mem(1) 00 Mem(1) 00 Mem(1) 00 Mem(2) 00 Mem(2) 00 Mem(2) 00 Mem(2) 00 Mem(3) 00 Mem(3) 00 Mem(3) 11 00 Mem(3) 15 8 requests, 6 misses CEG3420 L08.21 Spring 2016

MIPS Direct Mapped Cache Example q One word blocks, cache size = 1K words (or 4KB) 31 30... 13 12 11... 2 1 0 Byte offset Hit Tag 20 Index 10 Data Index 0 1 2... 1021 1022 1023 Valid Tag 20 Data 32 What kind of locality are we taking advantage of? CEG3420 L08.22 Spring 2016

Multiword Block Direct Mapped Cache q Four words/block, cache size = 1K words Hit 31 30... 13 12 11... 4 3 2 1 0 Byte offset Data Tag 20 Index 8 Block offset IndexValid 0 1 2... 253 254 255 Tag 20 Data What kind of locality are we taking advantage of? CEG3420 L08.23 Spring 2016 32

Taking Advantage of Spatial Locality q Let cache block hold more than one word Start with an empty cache - all blocks initially marked as not valid 0 1 2 3 4 3 4 15 0 1 2 3 4 3 4 15 CEG3420 L08.24 Spring 2016

Taking Advantage of Spatial Locality q Let cache block hold more than one word Start with an empty cache - all blocks initially marked as not valid 0 1 2 3 4 3 4 15 0 miss 00 Mem(1) Mem(0) 1 hit 2 00 Mem(1) Mem(0) miss 00 Mem(1) Mem(0) 00 Mem(3) Mem(2) 3 hit 4 miss 3hit 01 5 4 00 Mem(1) Mem(0) 00 Mem(3) Mem(2) 00 Mem(1) Mem(0) 00 Mem(3) Mem(2) 01 Mem(5) Mem(4) 00 Mem(3) Mem(2) 4 hit 15 miss 01 Mem(5) Mem(4) 00 Mem(3) Mem(2) 8 requests, 4 misses 1101 Mem(5) Mem(4) 15 14 00 Mem(3) Mem(2) CEG3420 L08.25 Spring 2016

Cache Field Sizes q The number of bits in a cache includes both the storage for data and for the tags 32-bit address For a direct mapped cache with 2 n blocks, n bits are used for the index For a block size of 2 m words (2 m+2 bytes), m bits are used to address the word within the block and 2 bits are used to address the byte within the word q What is the size of the tag field? 32 (n + m +2) q The total number of bits in a direct-mapped cache is then 2 n x (block size + tag field size + valid field size) CEG3420 L08.26 Spring 2016

EX: Bits in a Cache q How many total bits are required for a direct mapped cache with 16KB of data and 4-word blocks assuming a 32-bit address? CEG3420 L08.27 Spring 2016

Handling Cache Hits q Read hits (I$ and D$) this is what we want! q Write hits (D$ only) require the cache and memory to be consistent - always write the data into both the cache block and the next level in the memory hierarchy (write-through) - writes run at the speed of the next level in the memory hierarchy so slow! or can use a write buffer and stall only if the write buffer is full allow cache and memory to be inconsistent - write the data only into the cache block (write-back the cache block to the next level in the memory hierarchy when that cache block is evicted ) - need a dirty bit for each data cache block to tell if it needs to be written back to memory when it is evicted can use a write buffer to help buffer write-backs of dirty blocks CEG3420 L08.28 Spring 2016

q q Handling Cache Misses (Single Word Blocks) Read misses (I$ and D$) stall the pipeline, fetch the block from the next level in the memory hierarchy, install it in the cache and send the requested word to the processor, then let the pipeline resume Write misses (D$ only) 1. stall the pipeline, fetch the block from next level in the memory hierarchy, install it in the cache (which may involve having to evict a dirty block if using a write-back cache), write the word from the processor to the cache, then let the pipeline resume Or (normally used in write-back caches) 2. Write allocate just write the word into the cache updating both the tag and data, no need to check for cache hit, no need to stall Or (normally used in write-through caches with a write buffer) 3. No-write allocate skip the cache write (but must invalidate that cache block since it will now hold stale data) and just write the word to the write buffer (and eventually to the next memory level), no need to stall if the write buffer isn t full CEG3420 L08.29 Spring 2016

Measuring Cache Performance q Assuming cache hit costs are included as part of the normal CPU execution cycle, then CPU time = IC CPI CC = IC (CPI ideal + Memory-stall cycles) CC CPI stall q Memory-stall cycles come from cache misses (a sum of read-stalls and write-stalls) Read-stall cycles = reads/program read miss rate read miss penalty Write-stall cycles = (writes/program write miss rate write miss penalty) + write buffer stalls q For write-through caches, we can simplify this to Memory-stall cycles = accesses/program miss rate miss penalty CEG3420 L08.30 Spring 2016

Reducing Cache Miss Rates #1 1. Allow more flexible block placement q q In a direct mapped cache a memory block maps to exactly one cache block At the other extreme, could allow a memory block to be mapped to any cache block fully associative cache q A compromise is to divide the cache into sets each of which consists of n ways (n-way set associative). A memory block maps to a unique set (specified by the index field) and can be placed in any way of that set (so there are n choices) (block address) modulo (# sets in the cache) CEG3420 L08.31 Spring 2016

Another Reference String Mapping q Consider the main memory word reference string Start with an empty cache - all blocks initially marked as not valid 0 4 0 4 0 4 0 4 0 4 0 4 0 4 0 4 CEG3420 L08.32 Spring 2016

Another Reference String Mapping q Consider the main memory word reference string Start with an empty cache - all blocks initially marked as not valid 0 4 0 4 0 4 0 4 0 miss 4 miss 0 miss 4 miss 01 4 00 00 Mem(0) 00 Mem(0) 0 01 01 Mem(4) 00 Mem(0) 4 0 miss 4 miss 0 miss 4 miss 00 0 01 4 01 4 01 Mem(4) 00 Mem(0) 0001 Mem(4) 0 00 Mem(0) 8 requests, 8 misses q Ping pong effect due to conflict misses - two memory locations that map into the same cache block CEG3420 L08.33 Spring 2016

Way Set Associative Cache Example Cache 0 1 Set 0 1 0 1 V Tag Q1: Is it there? Data Compare all the cache tags in the set to the high order 3 memory address bits to tell if the memory block is in the cache 0000xx 0001xx 0010xx 0011xx 0100xx 0101xx 0110xx 0111xx 1000xx 1001xx 1010xx 1011xx 1100xx 1101xx 1110xx 1111xx Main Memory One word blocks Two low order bits define the byte in the word (32b words) Q2: How do we find it? Use next 1 low order memory address bit to determine which cache set (i.e., modulo the number of sets in the cache) CEG3420 L08.34 Spring 2016

EX: 2-way set associate q Consider the main memory word reference string, how many misses? Start with an empty cache 0 4 0 4 0 4 0 4 0 4 0 4 CEG3420 L08.35 Spring 2016

EX: 2-way set associate q Consider the main memory word reference string, how many misses? Start with an empty cache 0 miss 4 miss 0 hit 4 hit 000 Mem(0) 000 Mem(0) 0 4 0 4 0 4 0 4 000 Mem(0) 000 Mem(0) 010 Mem(4) 010 Mem(4) 010 Mem(4) 8 requests, 2 misses q Solves the ping pong effect in a direct mapped cache due to conflict misses since now two memory locations that map into the same cache set can co-exist! CEG3420 L08.36 Spring 2016

Four-Way Set Associative Cache q 2 8 = 256 sets each with four ways (each with one block) 31 30... 11 10 9... 2 1 0 Byte offset Tag 22 Index 8 Index 0 1 2... 253 254 255 V Tag Data 0 1 2... 253 254 255 V Tag Data 0 1 2... 253 254 255 V Tag Data 0 1 2... 253 254 255 Way 0 Way 1 Way 2 Way 3 V Tag Data 32 Hit 4x1 select Data CEG3420 L08.37 Spring 2016

Range of Set Associative Caches q For a fixed size cache, each increase by a factor of two in associativity doubles the number of blocks per set (i.e., the number or ways) and halves the number of sets decreases the size of the index by 1 bit and increases the size of the tag by 1 bit Tag Index Block offset Byte offset CEG3420 L08.38 Spring 2016

Range of Set Associative Caches q For a fixed size cache, each increase by a factor of two in associativity doubles the number of blocks per set (i.e., the number or ways) and halves the number of sets decreases the size of the index by 1 bit and increases the size of the tag by 1 bit Used for tag compare Selects the set Selects the word in the block Tag Index Block offset Byte offset Decreasing associativity Direct mapped (only one way) Smaller tags, only a single comparator Increasing associativity Fully associative (only one set) Tag is all the bits except block and byte offset CEG3420 L08.39 Spring 2016

Costs of Set Associative Caches q When a miss occurs, which way s block do we pick for replacement? Least Recently Used (LRU): the block replaced is the one that has been unused for the longest time - Must have hardware to keep track of when each way s block was used relative to the other blocks in the set - For 2-way set associative, takes one bit per set set the bit when a block is referenced (and reset the other way s bit) q N-way set associative cache costs N comparators (delay and area) MUX delay (set selection) before data is available Data available after set selection (and Hit/Miss decision). In a direct mapped cache, the cache block is available before the Hit/Miss decision - So its not possible to just assume a hit and continue and recover later if it was a miss CEG3420 L08.40 Spring 2016

Reducing Cache Miss Rates #2 2. Use multiple levels of caches q q With advancing technology have more than enough room on the die for bigger L1 caches or for a second level of caches normally a unified L2 cache (i.e., it holds both instructions and data) and in some cases even a unified L3 cache For our example, CPI ideal of 2, 100 cycle miss penalty (to main memory) and a 25 cycle miss penalty (to UL2$), 36% load/stores, a 2% (4%) L1 I$ (D$) miss rate, add a 0.5% UL2$ miss rate CPI stalls = 2 + (.02 25 +.005 100) + (.36.04 25 +.36.005 100) = 3.54 (as compared to 5.44 with no L2$) CEG3420 L08.41 Spring 2016