Τι είναι η προσωρινή μνήμη;

Όταν ζητάτε δεδομένα από οποιαδήποτε πηγή, υπάρχει πάντα κάποια καθυστέρηση. Το ping σε διακομιστές ιστού μετράται σε χιλιοστά του δευτερολέπτου, ο χρόνος πρόσβασης στον χώρο αποθήκευσης μπορεί να έχει λανθάνοντα χρόνο σε μικροδευτερόλεπτα, ενώ ο λανθάνοντας χρόνος RAM μετράται σε κύκλους ρολογιού CPU. Φυσικά, αυτού του είδους οι ταχύτητες θα ήταν αδιανόητες πριν από μερικές δεκαετίες, αλλά επί του παρόντος, δεν είναι ποτέ αρκετά γρήγορες. Η ταχύτητα πρόσβασης είναι τακτικά κάποια μορφή συμφόρησης στην απόδοση. Ένας από τους τρόπους με τους οποίους μπορεί να αντιμετωπιστεί αυτό είναι με την προσωρινή αποθήκευση.

Η προσωρινή αποθήκευση είναι μια διαδικασία αποθήκευσης ενός προσωρινού αντιγράφου ενός πόρου με τρόπο ώστε να είναι δυνατή η πρόσβαση σε αυτόν ταχύτερα από ό, τι συνήθως. Υπάρχει μια τεράστια γκάμα υλοποιήσεων τόσο σε λογισμικό όσο και σε υλικό. Οι κρυφές μνήμες μπορούν να λειτουργήσουν ως κρυφές μνήμες ανάγνωσης, κρυφές μνήμες εγγραφής ή και τα δύο.

Διαβάστε κρυφές μνήμες

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

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

Η ίδια η RAM λειτουργεί επίσης ως προσωρινή μνήμη ανάγνωσης για δεδομένα στον σκληρό δίσκο. Σε αυτήν την περίπτωση, τα δεδομένα για ένα πρόγραμμα που εκτελείται φορτώνονται προληπτικά στη μνήμη RAM, έτσι ώστε η CPU να έχει ταχύτερη πρόσβαση σε αυτό. Στη συνέχεια, τα δεδομένα από τη μνήμη RAM αποθηκεύονται περαιτέρω στην κρυφή μνήμη της CPU, αν και η διαδικασία για αυτό είναι πολύ πιο περίπλοκη καθώς η κρυφή μνήμη της CPU μετράται σε megabyte και όχι σε gigabyte.

Γράψτε κρυφές μνήμες

Η κρυφή μνήμη εγγραφής είναι μια κρυφή μνήμη που μπορεί να απορροφήσει δεδομένα που γράφονται σε μια πιο αργή συσκευή. Ένα συνηθισμένο παράδειγμα αυτού θα ήταν η κρυφή μνήμη SLC σε σύγχρονους SSD. Αυτή η κρυφή μνήμη δεν επιτρέπει την ταχύτερη ανάγνωση των δεδομένων, Ωστόσο, είναι πολύ πιο γρήγορο η εγγραφή σε από ό, τι η εγγραφή στο φλας TLC ή QLC που αποτελεί τον υπόλοιπο SSD. Η κρυφή μνήμη SLC μπορεί να απορροφήσει λειτουργίες εγγραφής υψηλής ταχύτητας και στη συνέχεια να μεταφορτώσει αυτά τα δεδομένα το συντομότερο δυνατό στο φλας TLC που προσφέρει πολύ καλύτερη πυκνότητα αποθήκευσης, αλλά είναι επίσης πολύ πιο αργή στην εγγραφή. Η χρήση της μνήμης flash με αυτόν τον τρόπο τη βελτιστοποιεί τόσο για γρήγορες ταχύτητες εγγραφής όσο και για υψηλή πυκνότητα αποθήκευσης.

Υβριδικές κρυφές μνήμες

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

Το Write Around μπορεί να είναι χρήσιμο εάν περιμένετε μεγάλο όγκο εγγραφών, καθώς ελαχιστοποιεί την εκτροπή της προσωρινής μνήμης. Σημαίνει, ωστόσο, ότι μια λειτουργία που στη συνέχεια διαβάζει οποιοδήποτε από αυτά τα γραπτά δεδομένα θα αντιμετωπίσει τουλάχιστον μία απώλεια προσωρινής μνήμης την πρώτη φορά. Προσωρινή μνήμη εγγραφής μέσω προσωρινής αποθήκευσης αποθηκεύουν αμέσως τις λειτουργίες εγγραφής σε προσωρινή μνήμη, πράγμα που σημαίνει ότι το αποτέλεσμα μπορεί να προβληθεί από τη μνήμη cache την πρώτη φορά που ζητείται. Ωστόσο, για να θεωρηθεί ολοκληρωμένη, μια λειτουργία εγγραφής πρέπει να εγγράψει τα δεδομένα και στο δίσκο, κάτι που προσθέτει καθυστέρηση. Μια κρυφή μνήμη επανεγγραφής έχει το ίδιο πλεονέκτημα με την εγγραφή, επιτρέποντας την άμεση εξυπηρέτηση των γραπτών δεδομένων από τη μνήμη cache. Ωστόσο, δεν απαιτεί λειτουργίες εγγραφής για εγγραφή στο δίσκο για να θεωρούνται ολοκληρωμένες. Αυτό μειώνει τον λανθάνοντα χρόνο εγγραφής, αλλά συνοδεύεται από τον κίνδυνο απώλειας δεδομένων εάν η κρυφή μνήμη είναι ασταθής και δεν ολοκληρώσει την εγγραφή των δεδομένων πίσω στην αποθήκευση πριν χαθεί η τροφοδοσία.

Πώς να αφαιρέσετε δεδομένα από την προσωρινή μνήμη;

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

Όλα αυτά σημαίνουν ότι είναι συχνά απαραίτητο να ανακυκλώνετε δεδομένα από τη μνήμη cache για να ελευθερώσετε χώρο για νέα δεδομένα που πρέπει να αποθηκευτούν στην κρυφή μνήμη. Υπάρχει μια σειρά από διαφορετικές προσεγγίσεις σε αυτό. "Λιγότερο συχνά χρησιμοποιείται", προτιμά την εξάλειψη εγγραφών κρυφής μνήμης που έχουν το μικρότερο αριθμό πρόσβασης. Αυτό μπορεί να είναι χρήσιμο για την πρόβλεψη ποιες εγγραφές θα έχουν τη μικρότερη επίδραση στις μελλοντικές απώλειες κρυφής μνήμης αλλά θα μετρούσε επίσης τις καταχωρήσεις που προστέθηκαν πρόσφατα ως με χαμηλό αριθμό προσβάσεων, κάτι που μπορεί να οδηγήσει σε προσωρινή μνήμη καρδάρα.

Το "Last πρόσφατα χρησιμοποιημένο" προτιμά την εξάλειψη εγγραφών προσωρινής μνήμης που δεν έχουν χρησιμοποιηθεί εδώ και καιρό. Αυτό προϋποθέτει ότι δεν χρησιμοποιούνται αυτήν τη στιγμή, αλλά δεν λαμβάνεται υπόψη εάν χρησιμοποιήθηκαν πολύ πριν από λίγο καιρό. Η "Πιο πρόσφατα χρησιμοποιημένη" προτιμά να εξάγει τις πιο πρόσφατα χρησιμοποιημένες καταχωρήσεις κρυφής μνήμης, με την προϋπόθεση ότι έχουν χρησιμοποιηθεί και δεν θα χρειαστεί να χρησιμοποιηθούν ξανά. Η καλύτερη προσέγγιση είναι γενικά ένας συνδυασμός και των τριών, σύμφωνα με τα στατιστικά χρήσης.

Παγιασμένες πληροφορίες και κίνδυνοι ασφάλειας

Ο κύριος κίνδυνος της κρυφής μνήμης είναι ότι οι πληροφορίες που περιέχουν μπορεί να γίνουν μπαγιάτικες. Μια καταχώρηση κρυφής μνήμης θεωρείται μπαγιάτικη όταν τα αρχικά δεδομένα έχουν ενημερωθεί αφήνοντας την καταχώριση κρυφής μνήμης ξεπερασμένη. Είναι σημαντικό να επαληθεύετε τακτικά ότι το ζωντανό αντίγραφο που εμφανίζεται εξακολουθεί να ταιριάζει με το αποθηκευμένο αντίγραφο.

Ειδικά σε ιστότοπους, είναι επίσης εξαιρετικά σημαντικό να προσδιορίσετε ποια δεδομένα μπορούν και ποια δεν μπορούν να αποθηκευτούν στην κρυφή μνήμη. Για παράδειγμα, είναι πολύ καλό για ένα μεγάλο αμετάβλητο αρχείο JavaScript να αποθηκεύεται προσωρινά. Αυτό εξοικονομεί από το χρήστη τη λήψη του κάθε φορά και μπορεί ακόμη και να ωφελήσει άλλους χρήστες που εξυπηρετούνται από την ίδια κρυφή μνήμη. Ωστόσο, δεν μπορείτε να αποθηκεύσετε δεδομένα για συγκεκριμένη περίοδο λειτουργίας. Φανταστείτε τι θα συνέβαινε αν περιηγηθήκατε σε μια εφαρμογή ανταλλαγής μηνυμάτων ενώ είστε συνδεδεμένοι ως ο εαυτός σας, μόνο για να διαπιστώσετε ότι είχατε μια κρυφή έκδοση των μηνυμάτων άλλου χρήστη. Ευτυχώς, οι διακομιστές ιστού μπορούν να καθορίσουν ποιοι πόροι μπορούν και ποιοι δεν μπορούν να αποθηκευτούν στην κρυφή μνήμη και αυτά τα ζητήματα είναι γενικά γνωστά, επομένως υπάρχουν λίγα ζητήματα όπως αυτό.

συμπέρασμα

Η κρυφή μνήμη είναι ένα τμήμα της μνήμης που μπορεί να αποθηκεύσει ορισμένα δεδομένα που χρησιμοποιήθηκαν πρόσφατα σε μια μέθοδο αποθήκευσης που είναι ταχύτερη στην πρόσβαση από ό, τι θα ήταν για να ολοκληρωθεί ξανά η κανονική διαδικασία πρόσβασης δεδομένων. Μια κρυφή μνήμη είναι συνήθως περιορισμένη σε χωρητικότητα, πράγμα που σημαίνει ότι πρέπει να αποβάλει τις καταχωρήσεις μόλις γεμίσει. Οι κρυφές μνήμες είναι γενικά διαφανείς για τον χρήστη, πράγμα που σημαίνει ότι η καθυστέρηση είναι η μόνη ένδειξη ότι το αποτέλεσμα προβλήθηκε μέσω μιας κρυφής μνήμης.