Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf ·...

28
Υ01 Αρχιτεκτονική Υπολογιστών Ιεραρχία μνήμης: προχωρημένα θέματα Αρης Ευθυμίου

Transcript of Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf ·...

Page 1: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Υ-­‐01  Αρχιτεκτονική  Υπολογιστών    Ιεραρχία  μνήμης:  προχωρημένα  θέματα    

Αρης  Ευθυμίου  

Page 2: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Το  σημερινό  μάθημα  

  Εικονική  μνήμη  και  κρυφές  μνήμες  –  Physical/Virtual  indexing  –  Σκοπός:  μείωση  hit  Ome  

  Τεχνικές  σχετικές  με  associaOvity  –  pseudo-­‐associaOvity,  way-­‐predicOon,  vicOm  cache  

  Αλγόριθμοι  αντικατάστασης    Lockup-­‐free  caches  

2

Page 3: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Εικονική  μνήμη  και  cache  

  Απαραίτητη  σε  ένα  σύγχρονο  σύστημα    Απαιτείται  υποστήριξη  από  υλικό  

–  TLB  για  γρήγορη  μετάφραση  Πώς  συνδιάζεται  η  μετάφραση  με  προσπέλαση  κρυφής  μνήμης;  

  Physically  Indexed,  Physically  Tagged  –  πρώτα  μετάφραση,  μετά  προσπέλαση  κρυφής  μνήμης  

  Virtually  Indexed,  Virtually  Tagged  –  μετάφραση  μόνο  για  αστοχίες  κρυφής  μνήμης  

  Virtually  Indexed,  Physically  Tagged  –  ταυτόχρονη  μετάφραση,  προσπέλαση  κρυφής  μνήμης  

  Physically  Indexed,  Virtually  Tagged  

3

Page 4: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Virtually  Indexed,  Virtually  Tagged  

  Μετάφραση  μόνο  για  αστοχίες  κρυφής  μνήμης  –  Το  TLB  δε  θα  είναι  ενημερωμένο  για  εγγραφές,  πληροφορία  LRU  

  Ομώνυμες  διευθύνσεις  (homonyms)  –  Ιδιες  εικονικές  διευθύνσεις  (διαφορετικών  διεργασιών)  

αντιστοιχούν  σε  διαφορετικές  φυσικές  διευθύνσεις  

–  Λύση:  προσθήκη  του  Process  ID  (PID)  στην  εικονική  διεύθυνση,  ή  άδειασμα  (flush)  της  κρυφής  μνήμης  σε  κάθε  αλλαγή  διεργασίας  (context  switch)  

  Συνώνυμες  διευθύνσεις  (synonyms)  –  Διαφορετικές  εικονικές  διευθύνσεις  (διαφορετικών  διεργασιών)  

αντιστοιχούν  στην  ίδια  φυσική  διεύθυνση  

4

Page 5: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Virtually  Indexed,  Physically  Tagged  

  Παράλληλη  προσπέλαση  TLB,  cache  –  η  σύγκριση  των  tag  της  cache  θα  γίνει  μετά  τη  μετάφραση  διευθ.  

  Δεν  υπάρχουν  ομώνυμες  διευθύνσεις  –  το  TLB  πρέπει  να  περιέχει  PID  ή  να  αδειάζει  σε  αλλαγή  

διεργασίας  

  Συνώνυμες  διευθύνσεις  μπορούν  να  υπάρχουν  

5

TLB  

Processor  Core  

VIPT  Cache  

Main  Memory  VA

hit

miss

cache line return

PA

Page 6: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Αποφυγή  συνωνύμων  

  Αν  το  a  είναι  0  bits,  ή  το  Set  index  βρίσκεται  “δεξιότερα”  του  page  offset,  δεν  μπορούν  να  υπάρχουν  συνώνυμα  –  τυχόν  συνώνυμες  γραμμές  θα  είναι  στο  ίδιο  set  

  Το  μέγεθος  page  καθορίζει  τη  μέγιστη  χωρητικότητα  της  κρυφής  μνήμης  (για  direct  mapped)  

  ή  τον  μέγιστο  αριθμό  των  set  –  Max  number  of  sets  =  page  size  /  cache  line  size  

6

VPN Page Offset

Cache Tag Set Index Line Offset

εικονική  διεύθυνση  

a

Page 7: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Ανίχνευση  συνωνύμων,  a  >  0  

  Μεταβολή  του  συστήματος  μετάφρασης  ώστε  οι  μοιραζόμενες  σελίδες  να  έχουν  ίδια  τα  a  bits  διευθύνσεων  –  ονομάζεται  page  colouring  

  Κάθε  cache  miss  εξετάζει  όλες  τις  πιθανές  θέσεις/set  για  συνώνυμα  –  π.χ.  για  a=2,  τα  συνώνυμα  μπορούν  να  βρισκονται  σε  4  μόνο  set  

  Ελεγχος  συνωνύμων  στη  L2  cache  –  L2  direct  mapped,  δυσκολότερο  αν  είναι  associaOve  

–  L2  physically  indexed,  physically  tagged  –  L2  inclusive  

7

Page 8: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Συνώνυμα  στο  MIPS  R10000  (L2)  

  Αποθήκευση  του  VPN[1:0]  (που  αντιστοιχεί  στο  a)  στα  tags  της  L2,  επιπλέον  του  κανονικού  tag  

  Εστω  2  συνώνυμες  διευθύνσεις  VA1,  VA2  που  διαφέρουν  στο  VPN[1:0],  αλλά  απεικονίζονται  στην  ίδια  φυσική  διεύθυνση  PA  

  Υποθ.  VA1,  υπάρχει  ήδη  στις  L1,  L2    Προσπέλαση  VA2  αστοχεί  στην  L1    Στην  L2  θα  υπάρχει  ήδη  η  γραμμή,  με  το  επιπλέον  PPN

(VA1)[1:0],  που  θα  πρέπει  να  αντικατασταθεί  

8

                     VPN                                        12  bit  

   10  bit                              4-­‐bit  

Page 9: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Way-­‐associaOve  caches  

  Βελτιώνουν  το  miss  rate,  μειώνουν  conflict  misses  –  law  of  diminishing  returns  

  Αυξάνουν  το  hit  Ome  και  την  κατανάλωση  ενέργειας  –  προσπέλαση  πολλαπλών  ways  και  επιλογή  του  way  που  ευστοχεί  –  τα  δεδομένα  όλων  των  υπόλοιπων  δεν  χρησιμοποιούνται  

Ενδιαφέρουσες  τεχνικές:    Way-­‐predicOon  

–  πρόβλεψη  του  way  που  θα  ευστοχήσει    Faking-­‐associaOvity  

–  Μικρές  αλλαγές  σε  direct-­‐mapped  ώστε  να  έχει  όφελος  παρόμοιο  με  way  associaOve  

  VicOm  cache  –  μειώνει  conflict  misses  χωρίς  associaOvity  

9

Page 10: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Column-­‐associaOve  cache  

Βασική  ιδέα:  

  Κοινή  direct-­‐mapped  cache    Δεύτερη  ευκαιρία  αν  υπάρχει  αστοχία:  re-­‐hash  τη  

διεύθυνση  (αντιστοίχιση  σε  άλλη  γραμμή  της  cache)  

  Το  hashing  πρέπει  να  είναι  απλό,  π.χ.  αντιστροφή  του  msb  του  index  –  το  tag  πρέπει  να  επεκταθεί  ώστε  να  περιέχει  το  επιπλέον  bit  

  Η  διαπίστωση  αστοχίας  παίρνει  λίγο  παραπάνω  χρόνο  

10

Page 11: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Column-­‐associaOve  cache  

  Δύο  είδη  ευστοχίας  (hit):  με  διαφορετικούς  χρόνους    Η  MRU  γραμμή  θα  πρέπει  να  έχει  γρήγορο  hit  

–  Ανταλλαγή  των  2  γραμμών  του  ψεύτο-­‐set    Προσπέλαση:  a,b,c,b,c,b,c,…  

–  a,  b  έχουν  ίδιο  index,  c  διαφέρει  στο  msb  του  index  από  τις  a,b  

  Σε  μία  κανονική  2-­‐way  με  LRU  –  οι  πρώτες,  a,b,c  είναι  miss,  μετά  πάντα  hit  

  Στη  Column  AssociaOve  Cache:  

11

a  a  b  c  a  a  b  

Page 12: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Skewed  associaOve  cache  

  Η  χρήση  απλής  αντιστοίχισης  διεύθυνσης  σε  cache  index  προκαλεί  συχνά  συγκρούσεις  ακόμη  και  σε  set-­‐associaOve  caches  

  Μια  λύση  είναι  η  χρήση  διαφορετικής  αντιστοίχισης  (hash)  σε  κάθε  way  

  Η  χρήση  αλγόριθμου  αντικατάστασης  LRU  είναι  δύσκολη  

12

Page 13: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Way  predicOon  

  Πρόβλεψη  του  way  που  έχει  τη  γραμμή  –  δεν  γίνεται  προσπέλαση  στα  άλλα  ways  –  Χρησιμοποιείται  για  περιορισμό  κατανάλωσης  ενέργειας  –  Αν  η  πρόβλεψη  αποτύχει:  προσπέλαση  σε  άλλα  ways  –  Μεταβλητός  χρόνος  hit  

  Διάφορες  τεχνικές  πρόβλεψης:  –  Most  recently  used  way  (στον  R10K  μαζί  με  pseudo-­‐associaOve)  –  Σε  συνδιασμό  με  τον  branch  predictor  στον  Alpha  21264  

  Εχει  μεγαλύτερα  ποσοστά  επιτυχούς  πρόβλεψης  σε  I$  

13

Page 14: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

VicOm  cache  

  Μικρός  buffer  με  μεγάλη  associaOvity  –  4  –  64  γραμμές  

  «Πίσω»  από  την  κρυφή  μνήμη    Περιέχει  γραμμές  που  πρόσφατα  εκδιώχθηκαν  

(evicted)  από  τη  L1  

  Κάθε  miss  της  L1  εξετάζει  τη  vicOm  cache  πρίν  προσπελάσει  το  επόμενο  επίπεδο  ιεραρχίας  –  αν  hit,  ξαναφέρνει  τη  γραμμή  στη  L1  

  Μειώνει  τα  conflict  misses  –  αυξάνει  λίγο  το  miss  penalty  

14

Page 15: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Αλγόριθμοι  αντικατάστασης  

  Σε  associaOve  caches  υπάρχουν  αρκετές  επιλογές  για  κάθε  αντικατάσταση  –  η  επιλεγόμενη  γραμμή  λέγεται  θύμα  (vicOm)  

  Ο  πιο  γνωστός  αλγόριθμος  αντικατάστασης  είναι  ο  least  recently  used  (LRU)  –  στηρίζεται  στην  αρχή  τοπικότητας  αναφορών  

  Ακριβή  υλοποίηση  σε  υλικό  για  associaOvity  >=  8  –  για  m-­‐ways,  υπάρχουν  m!  δυνατές  κατατάξεις  

–  άρα  απαιτούνται  τουλάχιστον  log2(m!)  bits  

  Προσεγγιστικοί  αλγόριθμοι  LRU    Αλγόριθμος  NMRU  (not  most  recently  used)  

15

Page 16: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Αλγόριθμος  LRU  (matrix)    Κάθε  θέση  γραμμής  κρατάει  πληροφορίες  για  το  χρόνο  

τελευταίας  προσπέλασης  –  επιπλέον  του  tag,  dirty,  valid  –  πρέπει  να  ανανεώνεται  (ανάγνωση,  εγγραφή)  σε  κάθε  

προσπέλαση    χωρίς  να  επηρεάσει  το  κύκλο  ρολογιού  

16

0

1

2

3

0 1 2 3

Page 17: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Tree  PLRU  

  Η  σειρά  των  προσπελάσεων  καταγράφεται  σε  ένα  δυαδικό  δέντρο  –  τα  φύλλα  αντιστοιχούν  στα  ways  και  δεν  αποθηκεύουν  τίποτα  –  Χρειάζονται  m-­‐1  bit  για  m  ways  (για  m  δύναμη  του  2)  

  Το  θύμα  επιλέγεται  ακολουθώντας  το  δέντρο  –  Αν  ο  κόμβος  είναι  0,  πήγαινε  αριστερά,  αν  1,  δεξιά  

  Κάθε  προσπέλαση  αλλάζει  τις  τιμές  των  κόμβων  που  διάσχισε  έτσι  ώστε  να  δείχνουν  προς  την  αντίθετη  μεριά  από  το  φύλλο  που  αντιστοιχεί  στο  MRU  

17

Page 18: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Tree  PLRU  operaOon  

Path  shows  the  vicOm  

18

Page 19: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Tree  PLRU  operaOon  Previous  allocaOon  changes  tree  nodes  to  point  away  from  last  way  (0)  

Path  for  next    vicOm  

19

Page 20: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Tree  PLRU  operaOon  

20

Page 21: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Tree  PLRU  operaOon  

Now  we  have  a  hit  in  way  4.  Not  a  new  allocaOon  as  in  previous  steps  

21

Page 22: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Tree  PLRU  operaOon  

Nodes  202,  205  were  poinOng  away  from  way  4  already,  so  they  don’t  change!  

22

Page 23: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Αλγόριθμος  NMRU  

  1  bit  για  κάθε  way    Σε  κάθε  hit,  το  bit  παίρνει  τη  τιμή  1    Περιοδικά,  όλα  τα  bits  μηδενίζονται  

–  ή/και  όταν  όλα  γίνουν  1    Για  αντικατάσταση  επιλέγεται  η  «πρώτη»  way  που  έχει  

τιμή  0  –  η  θέση  που  ξεκινάμε  την  αναζήτηση  αλλάζει  με  round-­‐robin  

23

Page 24: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Sector  cache  

  Τα  tags  μιας  κρυφής  μνήμης  καταλαμβάνουν  σημαντικό  ποσοστό  του  συνολικού  χώρου  της  

  Χρησιμοποιώντας  (πολύ)  μεγάλες  γραμμές,  μειώνεται  ο  αριθμός  των  απαιτούμενων  bit  για  tags  –  αλλά  αυξάνεται  ο  χρόνος  μεταφοράς  ολόκληρων  γραμμών  

μεταξύ  cache,  κύριας  μνήμης  –  επιπλέον,  σε  πολυεπεξεργαστές,  αυξάνεται  η  πιθανότητα  false  

sharing  

  Sector  cache:  χωρίζει  γραμμές  σε  υπο-­‐τμήματα  (sector)  και  μεταφέρει  μόνο  sectors  μεταξύ  επιπέδων  της  ιεραρχίας  μνήμης  –  καθε  sector  χρειάζεται  ξεχωριστό  valid  bit  

Page 25: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Lockup-­‐free  (non-­‐blocking)  caches  

  Επιτρέπουν  προσπελάσεις  μετά  από  1  ή  περισσότερες  αστοχίες  –  hit-­‐under-­‐miss  

–  hit  under  mulOple  miss,  miss  under  miss  

  Δεν  έχουν  νόημα  χωρίς  –  εκτέλεση  εκτός  σειράς  –  ιεραρχία  μνήμης  που  δεν  

επιτρέπει  πολλαπλές  προσπελάσεις  σε  εξέλιξη  

  Εξετάζουμε  μόνο  αναγνώσεις  –  Εγγραφές:  βλ.  write-­‐buffer  

25

Page 26: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Miss  Status  Holding  Registers  

MSHR    αποθηκεύει  πληροφορία  σχετική  με  την  αστοχία:  

  αν  η  καταχώρηση  είναι  έγγυρη    διεύθυνση  της  γραμμής  που  αστόχησε  

–  με  δυνατότητα  παράλληλης  (associaOve)  αναζήτησης    για  κάθε  load/store  σχετική  με  τη  γραμμή:    

–  είδος,  μέγεθος  προσπέλασης  –  block  offset  –  ο  αριθμός  φυσικού  καταχωρητή  που  θα  φορτώσει  την  τιμή  ή  

store  buffer  

26

Page 27: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

MSHR  λειτουργία  

  Κάθε  νέο  miss  ελέγχει  όλους  τους  MSHRs  –  αν  η  γραμμή  υπάρχει,  προσθέτει  πληροφορία  –  αλλιώς,  χρησιμοποίησε  ελεύθερο  MHSR  –  αλλιώς,  stall  

  Κάθε  cache  refill  ή  μέρος  του,  ελέγχει  όλους  τους  MSHRs  –  αν  η  γραμμή  υπάρχει,  ψάχνει  αν  μια  load/store  περιμένει  τη  λέξη  

  και  τη  γράφει  στον  αντίστοιχο  καταχωρητή  –  γράφει  στην  κρυφή  μνήμη  

  Οταν  το  refill  ολοκληρωθεί  –  ο  αντίστοιχος  MSHR  ενημερώνεται  ως  μη  έγγυρος      

27

Page 28: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!

Non-­‐uniform  cache  access  

  Μεγάλες  μνήμες  δεν  υλοποιούνται  ως  ένα  ενιαίο  ορθογώνιο  από  κελιά  μνήμης  –  οργανώνονται  ως  μικρότερα  “arrays”  (mats)  –  κάποια  bit  της  διεύθυνσης  επιλέγουν  ένα  από  τα  arrays  

  Σε  αρκετά  μεγάλες  μνήμες  (μερικά  Mbytes)  η  διαφορά  καθυστέρησης  δεν  είναι  ομοιομορφη  –  κοντινά  arrays  έχουν  μικρότερη  καθυστέρηση  από  μακρινά  

  Οι  NUCAs  δεν  κρύβουν  τις  διαφορές  καθυστέρησης    Θέματα  τοποθέτησης  δεδομένων  

–  στατική  ή  δυναμική