Σχεδιασμός της Ιεραρχίας Μνήμης (1)
DESCRIPTION
Σχεδιασμός της Ιεραρχίας Μνήμης (1). Pedro Trancoso Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου. Η Αρχή. - PowerPoint PPT PresentationTRANSCRIPT
Σχεδιασμός της Ιεραρχίας Μνήμης (1)
Pedro TrancosoΤμήμα ΠληροφορικήςΠανεπιστήμιο Κύπρου
Η Αρχή...“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)
Το Κίνητρο... Διαφορά μεταξύ της επίδοσης του
επεξεργαστή και της μνήμης:
Παράδειγμα:Alpha 200MHz 340ns/5.0ns = 136 clkAlpha 300MHz 266ns/3.3ns = 320 clkAlpha 566MHz 180ns/1.7ns = 648 clk
Τυπική Ιεραρχία Μνήμης
Ορολογία για Κρυφή Μνήμη... 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, ...
Βασικές Έννοιες Πρόσβαση στην Κρυφή Μνήμη
Λόγος Επιτυχίας (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)
Επίδοση της Κρυφής Μνήμης
Παράδειγμα: 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)
Κρυφή Μνήμη
BLOCK
SET
WORD
Τέσσερις Ερωτήσεις
1. Που μπορούμε να βάλουμε ένα μπλοκ; (block placement)
2. Πως βρίσκουμε αν ένα μπλοκ είναι στην Κρυφή Μνήμη; (block identification)
3. Ποιο μπλοκ να αντικαταστήσω μετά από αποτυχία; (block replacement)
4. Τι γίνεται όταν γράφουμε; (write strategy)
Που μπορούμε να βάλουμε ένα μπλοκ;
Οργάνωση της Κρυφής Μνήμης:
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)
Πως βρίσκουμε αν ένα μπλοκ είναι στην Κρυφή Μνήμη;
Διεύθυνση: Block Offset Block Address: Index + Tag Λειτουργία:
Index για να βρει που μπορεί να είναι, Tag για να βρει αν είναι το συγκεκριμένο μπλοκ
(κάνουμε Tag Check για όλα τα πιθανά Tags), Offset για να βρει τα δεδομένα μέσα στο μπλοκ
Ποίο μπλοκ να αντικαταστήσω μετά από αποτυχία; Direct Mapped:
Μόνο ένα μπλοκ μπορεί να αντικατασταθεί
Set Associative: Random (απλό) Least-recently used (LRU) First in, first out (FIFO)
Τι γίνεται όταν γράφουμε; Οι περισσότερες προσβάσεις είναι
διαβάσματα (π.χ. 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)
Τι γίνεται όταν γράφουμε; Δυο επιλογές όταν έχουμε 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
Παράδειγμα: Alpha 21264 Data Cache
Επίδοση της Κρυφής Μνήμης
Άσκηση: Ποια οργάνωση έχει χαμηλότερο λόγο αποτυχίας: 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
Επίδοση της Κρυφής Μνήμης
Άσκηση: 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
Μείωση Ποινής Λόγω Αποτυχιών
Κρυφή Μνήμη Πολύ-επιπέδου Πιο γρήγορη ή πιο μεγάλη ΚΜ; ΚΜ Δεύτερο
επίπεδο (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
Μείωση του Λόγου Αποτυχίας 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…)
Μείωση του Λόγου Αποτυχίας
Μεγαλύτερο μέγεθος του μπλοκ Reduces compulsory misses (spatial
locality) Increases miss penalty May increase conflict and capacity misses
Μεγαλύτερο μέγεθος του μπλοκ Άσκηση:
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?
Μείωση του Λόγου Αποτυχίας Μεγαλύτερη Κρυφή Μνήμη
Προφανώς! Higher Associativity
Μείωση των Conflict Misses Way Prediction and
Pseudoassociative Caches
Μείωση του Λόγου Αποτυχίας Βελτιώσεις από το
Μεταγλωττιστή 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
Μείωση του Λόγου Αποτυχίας Blocking
X=
X=