1 / 24

Σχεδιασμός της Ιεραρχίας Μνήμης (1)

Σχεδιασμός της Ιεραρχίας Μνήμης (1). Pedro Trancoso Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου. Η Αρχή.

odele
Download Presentation

Σχεδιασμός της Ιεραρχίας Μνήμης (1)

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. Σχεδιασμός της Ιεραρχίας Μνήμης (1) Pedro Trancoso Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου

  2. Η Αρχή... “Ideally one would desire an indefinitely large memory capacity such that any particular…word would be immediately available…We are…forced to recognize the possibility of constructing a hierarchy of memories, each of which has greater capacity than the preceding but which is less quickly accessible” A.W.Burks, H.H.Goldstein, and J. von Neumann (1946)

  3. Το Κίνητρο... • Διαφορά μεταξύ της επίδοσης του επεξεργαστή και της μνήμης: • Παράδειγμα: Alpha 200MHz 340ns/5.0ns = 136 clk Alpha 300MHz 266ns/3.3ns = 320 clk Alpha 566MHz 180ns/1.7ns = 648 clk

  4. Τυπική Ιεραρχία Μνήμης

  5. Ορολογία για Κρυφή Μνήμη... • Cache, fully associative, write allocate, virtual memory, dirty bit, unified cache, memory stall cycles, block offset, misses per instruction, direct mapped, write back, block, valid bit, data cache, locality, block address, hit time, address trace, write through, cache miss, set, instruction cache, page fault, random replacement, average memory access time, miss rate, index field, cache hit, n-way set associative, no-write allocate, page, least-recently used, write buffer, miss penalty, tag field, write stall, ...

  6. Βασικές Έννοιες • Πρόσβαση στην Κρυφή Μνήμη • Λόγος Επιτυχίας (Cache Hit / Hit Rate), Χρόνος Επιτυχίας (Hit Time) • Λόγος Αποτυχίας (Cache Miss / Miss Rate), Ποινή Αποτυχίας (Miss Penalty) • Τοπικότητα • Χρονική Τοπικότητα (Temporal Locality) • If an item is referenced, it will tend to be referenced again soon (e.g. loops, reuse) • Χωρική Τοπικότητα (Spatial Locality) • If an item is referenced, items whose addresses are close by tend to be referenced soon (e.g. straight line code, array accesses)

  7. Επίδοση της Κρυφής Μνήμης • Παράδειγμα: • CPI=1, load/store=50% instr, miss penalty=25clk, miss rate=2%, speedup=? CPU execution time = (CPU clock cycles + Memory stall cycles) x Clock cycle time Memory Stall Cycles = Number of misses x Miss penalty = IC x (Misses / Instruction) x Miss penalty = IC x (Memory Accesses / Instruction) x Miss rate x Miss penalty Memory stall Cycles = IC x Reads per instruction x Read miss rate x Read miss penalty + IC x Writes per instruction x Write miss rate x Write miss penalty (Misses / Instruction) = (Miss rate x Memory accesses) / Instruction count = Miss rate x (Memory accesses / Instruction)

  8. WORD BLOCK SET Κρυφή Μνήμη

  9. Τέσσερις Ερωτήσεις • Που μπορούμε να βάλουμε ένα μπλοκ; (block placement) • Πως βρίσκουμε αν ένα μπλοκ είναι στην Κρυφή Μνήμη; (block identification) • Ποιο μπλοκ να αντικαταστήσω μετά από αποτυχία; (block replacement) • Τι γίνεται όταν γράφουμε; (write strategy)

  10. Που μπορούμε να βάλουμε ένα μπλοκ; • Οργάνωση της Κρυφής Μνήμης: • Direct Mapped: each block has only one place it can appear Mapping = (Block address) MOD (Number of blocks in cache) • Fully Associative: a block can be placed anywhere • Set Associative: a block can be placed on a restricted set of places Mapping = (Block address) MOD (Number of sets in cache)

  11. Πως βρίσκουμε αν ένα μπλοκ είναι στην Κρυφή Μνήμη; • Διεύθυνση: • Block Offset • Block Address: Index + Tag • Λειτουργία: • Index για να βρει που μπορεί να είναι, • Tag για να βρει αν είναι το συγκεκριμένο μπλοκ (κάνουμε Tag Check για όλα τα πιθανά Tags), • Offset για να βρει τα δεδομένα μέσα στο μπλοκ

  12. Ποίο μπλοκ να αντικαταστήσω μετά από αποτυχία; • Direct Mapped: • Μόνο ένα μπλοκ μπορεί να αντικατασταθεί • Set Associative: • Random (απλό) • Least-recently used (LRU) • First in, first out (FIFO)

  13. Τι γίνεται όταν γράφουμε; • Οι περισσότερες προσβάσεις είναι διαβάσματα (π.χ. 10% st και37% ld για 5 SPECint2000) • Για το read μπορούμε να διαβάζουμε το Tag και το μπλοκ ταυτόχρονα όμως για το write... • Δυο επιλογές για να γράψουμε: • Write through: write to both block in cache and in main memory • Write back: write only to block in cache. Modified block written to main memory upon replacement (use dirty bit)

  14. Τι γίνεται όταν γράφουμε; • Δυο επιλογές όταν έχουμε write miss (write miss policy): • Write allocate: block is allocated (read miss + write) • No-write allocate: does not affect the cache, modifies only lower-level memory • Βελτίωση... • Write buffer: processor continues execution as data is written to buffer

  15. Παράδειγμα: Alpha 21264 Data Cache

  16. Επίδοση της Κρυφής Μνήμης • Άσκηση: Ποια οργάνωση έχει χαμηλότερο λόγο αποτυχίας: • 16KB instruction cache + 16KB data cache • 32 KB unified cache • Assume: 36% of instr are data transfers, hit=1clk, miss penalty=100clk, unified with single port means 1 extra clk if 2 requests, write-through with write buffer (ignore stalls to write buffer) Average memory access time = ΑΜΑΤ = Hit time + Miss rate x Miss penalty

  17. Επίδοση της Κρυφής Μνήμης • Άσκηση: cache penalty=100clk, all instr take 1clk, average miss rate=2%, average memory refs per instr=1.5, average cache misses per 1000 instr=30. Performance with and without cache=? CPU time = (CPU execution clock cycles + Memory stall clock cycles) x Clock cycle time

  18. Μείωση Ποινής Λόγω Αποτυχιών • Κρυφή Μνήμη Πολύ-επιπέδου • Πιο γρήγορη ή πιο μεγάλη ΚΜ; ΚΜ Δεύτερο επίπεδο (L2) • Λόγοι αποτυχίας της L2: • Local miss rate = miss L2 / access L2 • Global miss rate = miss L2 / memory access • Multilevel inclusion / exclusion AMAT = Hit time L1 + Miss rate L1 x Miss penalty L1 Miss penalty L1 = Hit time L2 + Miss rate L2 x Miss penalty L2 AMAT = Hit time L1 + Miss rate L1 x (Hit time L2 + Miss rate L2 x Miss penalty L2) AMAT = Misses per instruction L1 x Hit time L2 + Misses per instruction L2 x Miss penalty L2

  19. Μείωση του Λόγου Αποτυχίας • Types of Misses (“three C’s”) • Compulsory: first access. Also called cold-start misses or first-reference misses • Capacity: cache can not contain all blocks • Conflict: many blocks map to the same set. Also called collision misses or interference misses • (fourth C: Coherence…)

  20. Μείωση του Λόγου Αποτυχίας • Μεγαλύτερο μέγεθος του μπλοκ • Reduces compulsory misses (spatial locality) • Increases miss penalty • May increase conflict and capacity misses

  21. Μεγαλύτερο μέγεθος του μπλοκ • Άσκηση: Cache Size Block Size 4K 16K 64K 256K 16 8.57% 3.94% 2.04% 1.09% 32 7.24% 2.87% 1.35% 0.70% 64 7.00% 2.64% 1.06% 0.51% 128 7.78% 2.77% 1.02% 0.49% 256 9.51% 3.29% 1.15% 0.49% • Assume memory system takes 80 clk overhead and then delivers 16 bytes every 2 clk (16 bytes in 82clk, 32 bytes in 84clk,…). Which block size has the smallest average memory access time for each cache size?

  22. Μείωση του Λόγου Αποτυχίας • Μεγαλύτερη Κρυφή Μνήμη • Προφανώς! • Higher Associativity • Μείωση των Conflict Misses • Way Prediction and Pseudoassociative Caches

  23. i=1 j=0 for (i=0; i<5000; i++) for (j=0; j<100; j++) x[i][j] = 2*x[i][j] … i=0 j=0 i=0 j=100 Μείωση του Λόγου Αποτυχίας • Βελτιώσεις από το Μεταγλωττιστή • Loop Interchange for (j=0; j<100; j++) for (i=0; i<5000; i++) x[i][j] = 2*x[i][j] i=1 j=0 … i=0 j=0 i=0 j=100

  24. = X = X Μείωση του Λόγου Αποτυχίας • Blocking

More Related