Κρυφή μνήμη

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Μετάβαση σε: πλοήγηση, αναζήτηση
Βασική οργάνωση ΚΜΕ-Κρυφής μνήμης-Κύριας Μνήμης

Στην πληροφορική και στην ηλεκτρονική μηχανική κρυφή μνήμη (cache, προφέρεται «κας») καλείται η μνήμη υπολογιστή η οποία αποθηκεύει μία συλλογή από δεδομένα, τα οποία αποτελούν αντίγραφα τιμών που βρίσκονται κάπου αλλού. Το γνωστότερο παράδειγμα κρυφής μνήμης είναι η κρυφή μνήμη του επεξεργαστή, η οποία μεσολαβεί μεταξύ της κεντρικής μνήμης RAM και της Κεντρικής Μονάδας Επεξεργασίας (ΚΜΕ). Η διαφορά με την προσωρινή μνήμη (buffer) είναι ότι αυτή ορίζεται από το λειτουργικό σύστημα ή από ένα πρόγραμμα, ενώ η κρυφή μνήμη έχει προκαθορισμένο το υλικό της μέρος. Δηλαδή η προσωρινή μπορεί να είναι τμήμα του σκληρού δίσκου ή της RAM, ενώ η κρυφή μνήμη της ΚΜΕ είναι κατασκευασμένη και αποτελεί φυσικό και ανεξάρτητο τμήμα. Στη γενικότερη περίπτωση, όταν μιλούμε για κρυφή μνήμη υπάρχει μία ενεργή οντότητα που τα χρειάζεται και ενεργεί πάνω στα δεδομένα, ενώ από την άλλη μία περιοχή αποθήκευσης η οποία περιέχει τα δεδομένα των οποίων αντίγραφα τοποθετήσαμε στην κρυφή μνήμη.

Η χρησιμότητα της κρυφής μνήμης είναι ορατή στην περίπτωση που ο χρόνος πρόσβασης της ενεργούς οντότητας πάνω στα αυθεντικά δεδομένα είναι πολύ υψηλός σε σχέση με την πρόσβαση σε μια κρυφή μνήμη όπου τοποθετούμε αντίγραφα, αλλά από την άλλη αυτή η γρήγορη περιοχή αποθήκευσης έχει υψηλό κόστος κατασκευής. Έτσι, π.χ., σε έναν ηλεκτρονικό υπολογιστή ένα πρόγραμμα είναι αποθηκευμένο στην κύρια μνήμη, αλλά ο επεξεργαστής κατά την εκτέλεση της εφαρμογής τείνει για ένα σημαντικό ποσοστό της συνολικής χρονικής διάρκειας εκτέλεσης του προγράμματος να περιορίζεται σε μικρά υποσύνολα εντολών του προγράμματος (κάτι αναμενόμενο αφού τα προγράμματα περιέχουν βρόχους επανάληψης, ειδάλλως θα τερμάτιζαν σε πολύ μικρό χρόνο). Αυτό το φαινόμενο καλείται αρχή της τοπικότητας. Η κρυφή μνήμη της ΚΜΕ, ταχύτερη και πιο ακριβή από την κύρια μνήμη, αλλά και πολύ πιο μικρή σε μέγεθος (ώστε να περιορίζεται το κόστος), εκμεταλλεύεται την αρχή της τοπικότητας ώστε να αυξάνει σημαντικά στην πλειονότητα των περιπτώσεων τις υπολογιστικές επιδόσεις του συστήματος (να εκτελούνται ταχύτερα τα προγράμματα), αφού τα υποσύνολα των εντολών και των δεδομένων του προγράμματος τα οποία εκτελούνται συχνά προσκομίζονται στην κρυφή μνήμη, με αποτέλεσμα για σημαντικό χρόνο να επιτυγχάνεται απόδοση παρόμοια με αυτή ενός υπολογιστή ο οποίος διαθέτει μόνο την γρήγορη, αλλά ακριβή, κρυφή μνήμη.

Στην κατανόηση της βασικής λειτουργίας της κρυφής μνήμης μπορεί να βοηθήσει η αναλογία με τη χρήση του ψυγείου σε μια κουζίνα. Ο μάγειρας πρέπει σε καθημερινή βάση να παράγει κάποια φαγητά. Αν δεν είχε ψυγείο θα έπρεπε πιο συχνά να βγαίνει για να αγοράσει, π.χ. τα κρέατα, κάτι που θα μείωνε την αποδοτικότητά του, ενώ με τη βοήθεια του ψυγείου μπορεί να προμηθευτεί τα υλικά, π.χ. για μια εβδομάδα, εξοικονομώντας χρόνο. Άρα ο υπολογιστής θα αποκτά μεγαλήτερη ταχύτητα στο άνοιγμα των προγραμάτων με την μνήμη CACHE.

Κρυφή μνήμη ΚΜΕ[Επεξεργασία | επεξεργασία κώδικα]

Τυπική οργάνωση κρυφής μνήμης ΚΜΕ

Κρυφή μνήμη Κεντρικής Μονάδας Επεξεργασίας, γνωστή και ως ενδιάμεση μνήμη ή λανθάνουσα μνήμη ΚΜΕ, ονομάζουμε τη μνήμη που χρησιμοποιείται από τον επεξεργαστή για να επιτύχει ταχύτερη πρόσβαση στην κύρια μνήμη. Αυτή η μνήμη είναι γρηγορότερη, ακριβότερη και μικρότερη σε μέγεθος από την κύρια μνήμη. Στην πράξη είναι υψηλής ταχύτητας μνήμη SRAM, η οποία χρησιμοποιείται μεταξύ της KME και της κύριας μνήμης. Εντολές και λέξεις της κύριας μνήμης που χρησιμοποιούνται συχνά ή χρησιμοποιήθηκαν πρόσφατα, μεταφέρονται στην κρυφή μνήμη. Έτσι, την επόμενη φορά που η ΚΜΕ θα χρειαστεί μια λέξη, θα την αναζητήσει πρώτα στη μικρή και γρήγορα προσπελάσιμη κρυφή μνήμη. Αν η αναζήτηση είναι επιτυχής εξοικονομείται χρόνος, ενώ αν αποτύχει ξεκινά η προσπέλαση της κύριας μνήμης και ανανεώνεται η κρυφή μνήμη.

Όπως προαναφέρθηκε, η λειτουργία κάθε τύπου κρυφής μνήμης βασίζεται στην αρχή της τοπικότητας. Στην περίπτωση του επεξεργαστή αυτό σημαίνει ότι, αν ο τελευταίος χρειαστεί μια λέξη της κύριας μνήμης, η επόμενη λέξη που θα χρειαστεί κατά πάσα πιθανότητα θα βρίσκεται αποθηκευμένη κοντά στην προηγούμενη. Έτσι, μια ομάδα γειτονικών λέξεων (γραμμή κρυφής μνήμης) φορτώνεται στην κρυφή μνήμη μαζί με τη ζητούμενη, ώστε την επόμενη φορά να προσπελαστούν γρήγορα.

Λειτουργία της κρυφής μνήμης[Επεξεργασία | επεξεργασία κώδικα]

Άμεση χαρτογράφηση[Επεξεργασία | επεξεργασία κώδικα]

Κρυφή μνήμη με απευθείας απεικόνιση
  • cl : αριθμός γραμμής κρυφής μνήμης
  • mb : αριθμός τμήματος κυρίας μνήμης
  • num_cl : αριθμός γραμμών στην κρυφή μνήμη

{\color{Blue}cl}  = {\color{Blue}mb} \mod {\color{Blue}numcl}

Παράδειγμα

Εικόνα δομής διεύθυνσης

  • μήκος διεύθυνσης =
  • αριθμός διευθυνσιοδοτούμενων μονάδων =
  • μέγεθος τμήματος = μέγεθος γραμμής =
  • Αριθμός τμημάτων στην κύρια μνήμη =
  • Αριθμός γραμμών στην κρυφή μνήμη
  • Μέγεθος ετικέτας =

Πλήρως συσχετιστική[Επεξεργασία | επεξεργασία κώδικα]

Πλήρως συσχετιστική οργάνωση κρυφής μνήμης


Συσχετιστική συνόλου κ γραμμών[Επεξεργασία | επεξεργασία κώδικα]

Συσχετιστική οργάνωση κρυφής μνήμης συνόλου 4 γραμμών


Κρυφή μνήμη Ιστού[Επεξεργασία | επεξεργασία κώδικα]