1 / 21

ECE 463/563 Fall `18

ECE 463/563 Fall `18. Basic Cache Operation, cont.: replacement policies, write policies, victim caches Prof. Eric Rotenberg. Generic Cache. The same equations hold for any cache type Equation for # of blocks in the cache: Equation for # of sets in the cache:

sylviac
Download Presentation

ECE 463/563 Fall `18

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ECE 463/563Fall `18 Basic Cache Operation, cont.: replacement policies, write policies, victim caches Prof. Eric Rotenberg ECE 463/563, Microprocessor Architecture, Prof. Eric Rotenberg

  2. Generic Cache • The same equations hold for any cache type • Equation for # of blocks in the cache: • Equation for # of sets in the cache: • Fully-associative: ASSOC = # blocks

  3. Generic Cache (cont.) way 0 way 1 way 0 set 0 set 0 set 1 set 1 set 2 set 2 set 3 set 3 set 4 set 5 way 0 way 1 way 2 way 3 way 4 way 5 way 6 way 7 set 6 set 0 set 7

  4. Generic Cache (cont.) • What this means for your Project 1 simulator • You don’t have to treat the three cache types differently in your simulator • Support a generic N-way set-associative cache • Don’t have to specifically worry about the two extremes (direct-mapped / fully-associative) • Also, question: “How do I specify ‘fully-associative’ in the simulator command-line arguments?” • You don’t specify this explicitly • Instead, just specify ASSOC to be equal to SIZE/BLOCKSIZE (the number of blocks)

  5. Replacement Policy • Which block in a set should be replaced when a new block has to be allocated? • LRU (Least-Recently-Used) is common (or cheaper variants such as pseudo-LRU) • Others: FIFO, Random, more advanced policies

  6. LRU Implementation • Small counter per block in set • # bits in each counter = log2(ASSOC) • Each block’s counter indicates recency of access w.r.t. other blocks’ counters • For example: If a set has four blocks, each block gets a 2-bit counter. The block with “0” (b’00) counter was most-recently referenced, the block with “1” (b’01) was second-most-recently referenced, … and the block with “3” (b’11) was least-recently referenced overall. • If access hits in cache: • Increment the counters of other blocks whose counters are less than the referenced block’s counter (i.e., shift these formerly “more-recent” blocks to now be “less-recent” than the referenced block) • Set the referenced block’s counter to “0” (now the most-recently-used) • If access misses in cache: • Replace the LRU block (the block with counter “3”) and set the newly allocated block’s counter to “0” (now the most-recently-used block) • Increment the counters of all other blocks

  7. (3) (0) (1) (2) A (0) (1) (2) (3) A (1) (2) (3) B (0) A (2) (3) C (0) B (1) A (3) D (0) C (1) B (2) A (3) D (0) C (1) B (2) A (3) D (0) C (1) B (2) A (3) D (1) C (2) B (0) A (3) D (0) C (2) B (1) E (0) D (1) C (3) B (2) LRU Example • Blocks A, B, C, D, and E all map to the same set • Trace: A B C D D D B D E • (LRU counters are shown in parentheses)

  8. Handling Writes • Two questions • The write update question:Suppose there is a write request to a memory block that is cached in a given cache C. Is just C’s copy of the block updated with new data, or is the next level of the memory hierarchy updated at the same time? • The write allocate question:Suppose there is a write request to a memory block that is not cached in a given cache C. Do we bring the missing block into C (i.e., do we “allocate” the block)?

  9. The Write Update Question (1) • Write-through (WT) policy cache next level in memory hierarchy

  10. The Write Update Question (2) • Write-back (WB) policy cache next level in memory hierarchy

  11. The Write Update Question (3) • Write-back (WB) policy • What happens when a block previously written to needs to be replaced? • Need to have a “dirty bit” (D) with each block in the cache: set it when block is written to • When a dirty block is replaced, need to write entire block back to next level of memory (“writeback”)

  12. The Write Update Question (4) • Write-back (WB) policy cache D replacement of a dirty block causes writeback next level in memory hierarchy

  13. The Write Allocation Question (1) • Write-Allocate (WA) • Bring the block into the cache if the write misses (handled just like a read miss) • Typically, used with write-back policy: WBWA • Write-No-Allocate (NA) • Do not bring the block into the cache if the write misses • Typically, used with write-through policy: WTNA

  14. The Write Allocation Question (2) • WTNA (scenario: the write misses) write miss cache next level in memory hierarchy

  15. The Write Allocation Question (3) • WBWA (scenario: the write misses) write miss cache D next level in memory hierarchy

  16. Victim Cache • Small fully-associative cache that sits alongside main cache • E.g., holds 2-16 cache blocks • Management is slightly “weird” compared to conventional caches • When main cache evicts (replaces) a block, the victim cache will take the evicted (replaced) block • The evicted block is called the “victim block” • When the main cache misses, it searches the victim cache for recently evicted blocks. A victim cache hit means the main cache doesn’t have to go to the next level of memory hierarchy for the block.

  17. Victim Cache Example • 2-entry victim cache • Initially holds blocks X, Y • Y is the LRU block in the victim cache • Main cache is direct-mapped • Blocks A and B map to the same set in main cache • Trace: A B A B A B…

  18. A X Y (LRU) victim cache L1 cache

  19. B misses in L1 and evicts A, A goes to VC and replaces Y (previous LRU), X becomes LRU B X (LRU) A victim cache (VC) L1 cache

  20. A misses in L1 but hits in VC, so A and B swap positions: A is moved from VC to L1, and B (the victim) goes to VC where A was located (note – we don’t replace the LRU block, X, in case of VC hit) A X (LRU) B victim cache (VC) L1 cache

  21. Victim Cache – why? • Direct-mapped caches suffer badly from repeated conflicts • Victim cache provides illusion of set-associativity • A poor-man’s version of set-associativity

More Related