Πίσω

Παράδειγμα

Θεωρούμε ότι έχουμε την παρακάτω περιγραφή για έναν υπολογιστή και την απόδοση της κρυφής μνήμης:

    Μέγεθος μπλοκ = 1 λέξη
    Εύρος αρτηρίας μνήμης = 1 λέξη
    Ποσοστό αποτυχίας = 3%
    Πρόσβαση μνήμης ανά εντολή = 1.2
    Ποινή αποτυχίας κρυφής μνήμης = 32 κύκλοι
    Μέσος όρος κύκλων ανά εντολή (εκτός των αποτυχιών της κρυφής μνήμης) = 2

  θεωρούμε πως αν αλλάξουμε το μέγεθος του μπλοκ σε 2 λέξεις το ποσοστό αποτυχίας πέφτει στο 2% και με μπλοκ 4 λέξεων έχουμε ποσοστό αποτυχίας 1%. Ποια είναι η βελτίωση στην απόδοση μιας εναλλασσόμενης μνήμης 2 δρόμων και 4 δρόμων από όταν διπλασιάσουμε το μέγεθος της μνήμης και της αρτηρίας, υποθέτοντας ότι οι χρόνοι πρόσβασης είναι οι ακόλουθοι: 4 κύκλους για την αποστολή της διεύθυνσης, 24 κύκλους ο χρόνος πρόσβασης ανά λέξη και 4 κύκλους για την επιστροφή της λέξης;

Aπάντηση

  Οι κύκλοι ανά εντολή (CPI) για το βασικό υπολογιστή που χρησιμοποιεί μπλοκ 1 λέξης είναι:
(μέσος όρος κύκλων)+[(πρόσβαση μνήμης) x (% αποτυχίας) x (μέγεθος μπλοκ) x (ποινή αποτυχίας)]=
=2 + ( 1.2 * 3% * 1 *(4+24+4) = 3.15

  Στο παράδειγμα που εξετάζουμε δεν αλλάζει ο χρόνος κύκλου μηχανής ούτε η μέτρηση εντολών και έτσι μπορούμε να υπολογίσουμε τη βελτίωση της απόδοσης με βάση το CPI. Αυξάνοντας το μπλοκ της κρυφής μνήμης σε 2 λέξεις έχουμε τις παρακάτω επιλογές:

(Απευθείας εκτέλεση)

  • 32-bit αρτηρία και μνήμη, μη εναλλασσόμενη =
    2 + [1,2 x % αποτυχίας νέο x (2 λέξεις x ποινή αποτυχίας )] =
    2 + [1,2 x 2% x (2 x 32 )] = 3,54

  • 32-bit αρτηρία και μνήμη, εναλλασσόμενη =
    2 + [ 1,2 x % αποτυχίας νέο x [ 4 + 24 + (4 τράπεζες x 2 λέξεις )]] =
    [ 1,2 x 2% x [4+24+(4x2)]] = 2,86

  • 64-bit αρτηρία και μνήμη, μη εναλλασσόμενη = 2 + (1,2 x 2% x (1x32)) = 2,77

  Διαπιστώνουμε ότι όταν διπλασιάσουμε το μέγεθος του μπλοκ επιβραδύνουμε την απευθείας εκτέλεση (3,54 έναντι 3,15) ενώ η εναλλασσόμενη ή η ευρύτερη μνήμη είναι 1,10 και 1,14 φορές ταχύτερη αντίστοιχα. Αν αυξήσουμε το μέγεθος του μπλοκ σε 4 λέξεις έχουμε:

 
  • 32 bit αρτηρία και μνήμη, μη εναλλασσόμενη = 2 + (1,2 x 1% x (4x32)) = 3,54
  • 32-bit αρτηρία και μνήμη, εναλλασσόμενη =
    2 + [ 1,2 x % αποτυχίας νέο x [ 4 + 24 + (4 τράπεζες x 4 λέξεις )]] =
    2 + ( 1,2 x 1% x (4+24+(4x4))) = 2,53
  • 64-bit αρτηρία και μνήμη, μη εναλλασσόμενη = 2 + (1,2 x 1% x (2x32)) = 2,77

 

  Παρατηρούμε ότι το μέγεθος του μπλοκ επιβαρύνει την απόδοση για την απλή περίπτωση παρόλο που η εναλλασσόμενη μνήμη των 32-bit είναι τώρα γρηγορότερη.
(1,25 φορές γρηγορότερη έναντι 1,14 της ευρύτερης μνήμης & αρτηρίας)

Η υποδιαίρεση αυτή μας δείχνει ότι η εναλλασσόμενη μνήμη είναι στην ουσία μια ευρύτερη μνήμη, μόνο που οι προσβάσεις στις τράπεζες ανά περιόδους αναγκάζονται να μοιραστούν εσωτερικούς πόρους (σε αυτήν την περίπτωση την αρτηρία).