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

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

  • Upload
    odele

  • View
    52

  • Download
    1

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

Pedro TrancosoΤμήμα ΠληροφορικήςΠανεπιστήμιο Κύπρου

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

Η Αρχή...“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)

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

Το Κίνητρο... Διαφορά μεταξύ της επίδοσης του

επεξεργαστή και της μνήμης:

Παράδειγμα:Alpha 200MHz 340ns/5.0ns = 136 clkAlpha 300MHz 266ns/3.3ns = 320 clkAlpha 566MHz 180ns/1.7ns = 648 clk

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

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

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

Ορολογία για Κρυφή Μνήμη... 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, ...

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

Βασικές Έννοιες Πρόσβαση στην Κρυφή Μνήμη

Λόγος Επιτυχίας (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)

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

Επίδοση της Κρυφής Μνήμης

Παράδειγμα: 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)

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

Κρυφή Μνήμη

BLOCK

SET

WORD

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

Τέσσερις Ερωτήσεις

1. Που μπορούμε να βάλουμε ένα μπλοκ; (block placement)

2. Πως βρίσκουμε αν ένα μπλοκ είναι στην Κρυφή Μνήμη; (block identification)

3. Ποιο μπλοκ να αντικαταστήσω μετά από αποτυχία; (block replacement)

4. Τι γίνεται όταν γράφουμε; (write strategy)

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

Που μπορούμε να βάλουμε ένα μπλοκ;

Οργάνωση της Κρυφής Μνήμης:

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)

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

Πως βρίσκουμε αν ένα μπλοκ είναι στην Κρυφή Μνήμη;

Διεύθυνση: Block Offset Block Address: Index + Tag Λειτουργία:

Index για να βρει που μπορεί να είναι, Tag για να βρει αν είναι το συγκεκριμένο μπλοκ

(κάνουμε Tag Check για όλα τα πιθανά Tags), Offset για να βρει τα δεδομένα μέσα στο μπλοκ

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

Ποίο μπλοκ να αντικαταστήσω μετά από αποτυχία; Direct Mapped:

Μόνο ένα μπλοκ μπορεί να αντικατασταθεί

Set Associative: Random (απλό) Least-recently used (LRU) First in, first out (FIFO)

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

Τι γίνεται όταν γράφουμε; Οι περισσότερες προσβάσεις είναι

διαβάσματα (π.χ. 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)

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

Τι γίνεται όταν γράφουμε; Δυο επιλογές όταν έχουμε 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

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

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

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

Επίδοση της Κρυφής Μνήμης

Άσκηση: Ποια οργάνωση έχει χαμηλότερο λόγο αποτυχίας: 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

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

Επίδοση της Κρυφής Μνήμης

Άσκηση: 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

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

Μείωση Ποινής Λόγω Αποτυχιών

Κρυφή Μνήμη Πολύ-επιπέδου Πιο γρήγορη ή πιο μεγάλη ΚΜ; ΚΜ Δεύτερο

επίπεδο (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

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

Μείωση του Λόγου Αποτυχίας 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…)

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

Μείωση του Λόγου Αποτυχίας

Μεγαλύτερο μέγεθος του μπλοκ Reduces compulsory misses (spatial

locality) Increases miss penalty May increase conflict and capacity misses

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

Μεγαλύτερο μέγεθος του μπλοκ Άσκηση:

Cache SizeBlock 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?

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

Μείωση του Λόγου Αποτυχίας Μεγαλύτερη Κρυφή Μνήμη

Προφανώς! Higher Associativity

Μείωση των Conflict Misses Way Prediction and

Pseudoassociative Caches

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

Μείωση του Λόγου Αποτυχίας Βελτιώσεις από το

Μεταγλωττιστή Loop Interchange

for (j=0; j<100; j++)

for (i=0; i<5000; i++)

x[i][j] = 2*x[i][j]

for (i=0; i<5000; i++)

for (j=0; j<100; j++)

x[i][j] = 2*x[i][j]

i=0j=0

i=0j=100

i=1j=0

i=0j=0

i=0j=100

i=1j=0

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

Μείωση του Λόγου Αποτυχίας Blocking

X=

X=