Κάποια μνήμη RAM, ή μνήμη τυχαίας πρόσβασης, διαφημίζεται ως μνήμη ECC. Το ECC σημαίνει Error Correcting Code και είναι μια διαδικασία εντοπισμού και διόρθωσης σφαλμάτων στη μνήμη. Τα σφάλματα στη μνήμη RAM μπορεί να προκαλέσουν καταστροφή ή αλλοίωση των δεδομένων, γεγονός που μπορεί να οδηγήσει σε σφάλματα της συσκευής και ακόμη και ευπάθειες ασφαλείας. Η μνήμη RAM ECC δεν είναι συνήθως συμβατή με υλικό υπολογιστή καταναλωτικής ποιότητας.
Τι είναι τα σφάλματα μνήμης;
Τα σφάλματα μνήμης είναι ένα ζήτημα όπου αλλάζει η τιμή που είναι αποθηκευμένη στη μνήμη. Τα δεδομένα στη μνήμη RAM αποθηκεύονται σε δυαδική μορφή, με τιμές 1 ή 0. Εάν η τιμή του 1 αλλάξει σε 0 ή αντίστροφα, σε μια διαδικασία που ονομάζεται "bit-flipping", τα δεδομένα που είναι αποθηκευμένα στη μνήμη RAM αλλάζουν.
Για παράδειγμα, το αλλαγμένο bit θα μπορούσε να χρησιμοποιηθεί για την αποθήκευση μιας τιμής σε ένα υπολογιστικό φύλλο. Σε αυτήν την περίπτωση, η τιμή στο υπολογιστικό φύλλο θα μπορούσε να αλλάξει σε έναν εντελώς διαφορετικό αριθμό που θα επηρέαζε το αποτέλεσμα για οποιουσδήποτε υπολογισμούς, για παράδειγμα την τροποποίηση των οικονομικών προβλέψεων του α επιχείρηση. Σε άλλες περιπτώσεις, το αλλαγμένο bit θα μπορούσε να απενεργοποιήσει μια δυνατότητα ασφαλείας ή να δημιουργήσει ένα τυπογραφικό λάθος που αλλάζει τον τρόπο εκτέλεσης ενός προγράμματος. Αυτά τα δύο παραδείγματα είναι εξαιρετικά δύσκολο να εντοπιστούν και να επιλυθούν χωρίς τη χρήση μνήμης ECC. Σε ένα ακραίο σενάριο, ένα μόνο bit που αναστρέφεται θα μπορούσε να προκαλέσει ένα καταστροφικό σφάλμα που προκαλεί κατάρρευση του συστήματος.
Η ανατροπή bit έχει πολλές πιθανές αιτίες, η πιο κοινή αιτία είναι το αποτέλεσμα της ακτινοβολίας υποβάθρου, που προκαλείται κυρίως από νετρόνια που δημιουργούνται από συμβάντα κοσμικών ακτίνων. Μια κοσμική ακτίνα είναι ένα σωματίδιο υψηλής ενέργειας, συνήθως ένα πρωτόνιο, που ταξιδεύει με σχεδόν την ταχύτητα του φωτός. Εκπέμπονται από αστρικά σώματα, συμπεριλαμβανομένου του Ήλιου και άλλων αστρονομικών αντικειμένων υψηλής ενέργειας. Όταν μια κοσμική ακτίνα χτυπά ένα άτομο, δημιουργείται βροχή νετρονίων και άλλων υποατομικών σωματιδίων, αυτά τα νετρόνια συνεχίζουν να έχουν δευτερεύουσες αλληλεπιδράσεις.
Αυτές οι δευτερεύουσες αλληλεπιδράσεις νετρονίων πιστεύεται ότι είναι η κύρια πηγή σφαλμάτων αναστροφής bit. Οι κοσμικές ακτίνες είναι πιο συχνές σε υψηλότερα υψόμετρα με αύξηση 3,5 φορές στο 1,5 km πάνω από την επιφάνεια της θάλασσας και 300 φορές αύξηση στο υψόμετρο πλεύσης των αεροσκαφών. Αυτός ο αυξημένος κίνδυνος σε υψόμετρο απαιτεί πρόσθετα μέτρα αξιοπιστίας.
Πόσο συχνά είναι τα σφάλματα μνήμης;
Οι περισσότεροι άνθρωποι δεν βλέπουν τους υπολογιστές τους να κολλάνε κάθε μέρα, επομένως θα ήταν εύκολο να σκεφτεί κανείς ότι αυτός είναι πρωτίστως ένας θεωρητικός κίνδυνος. Έρευνα από κέντρα δεδομένων υπερκλίμακας έχει χρησιμοποιηθεί για την ανάλυση του ρυθμού περιστατικών ανατροπής bit. Έρευνα που διεξήγαγε η Google στα κέντρα δεδομένων της έδειξε ποσοστό σφάλματος περίπου 1 σφάλματος ενός bit ανά gigabyte μνήμης RAM κάθε 1,8 ώρες.
Η αποστολή Cassini-Huygens της NASA που ξεκίνησε το 1997 για να ταξιδέψει στον Κρόνο είχε διαμορφωθεί με δύο πανομοιότυπους υπολογιστές πτήσης ο καθένας με 2,5 Gb RAM. Κατά τα πρώτα δυόμισι χρόνια του ταξιδιού του, το διαστημόπλοιο παρατηρούσε σταθερά 280 σφάλματα ενός bit την ημέρα. Κατά τη διάρκεια μιας ημέρας, όταν ο Cassini-Huygens βρισκόταν στο μονοπάτι μιας ηλιακής έκλαμψης, μια τετραπλάσια αύξηση bit παρατηρήθηκαν σφάλματα, παρέχοντας περαιτέρω στοιχεία για το ότι ο Ήλιος είναι η αιτία των περισσότερων ανατροπών θέματα.
Υπήρχαν ανησυχίες ότι η συνεχιζόμενη αύξηση της πυκνότητας των μονάδων RAM θα οδηγούσε σε νεότερες εκδόσεις της μνήμης RAM να είναι όλο και πιο ευάλωτες στα bit-flips. Πιο πρόσφατες μελέτες έχουν δείξει ότι στην πραγματικότητα συμβαίνει το αντίθετο, καθώς τα σφάλματα έχουν μειωθεί καθώς η γεωμετρία της διαδικασίας έχει μειωθεί.
Πώς προστατεύει η μνήμη ECC από σφάλματα;
Η μνήμη ECC χρησιμοποιεί κωδικούς διόρθωσης σφαλμάτων, όπως κωδικούς Hamming, για τη διόρθωση σφαλμάτων ενός bit στη μνήμη RAM. Τα σφάλματα διπλού bit μπορούν να εντοπιστούν αλλά δεν διορθωθούν. Οι κωδικοί διόρθωσης σφαλμάτων Hamming λειτουργούν χρησιμοποιώντας μια σειρά από bit ισοτιμίας. Μαζί αυτά τα bit ισοτιμίας μπορούν να χρησιμοποιηθούν για να ανιχνεύσουν εάν έχουν αλλάξει τυχόν bit δεδομένων. Εάν ένα bit έχει αναγνωριστεί ότι έχει αναποδογυρίσει, τότε αλλάζει ξανά αυτόματα.
Συμβουλή: Ένα σφάλμα ενός bit είναι ένα περιστατικό αναστροφής bit όταν αναστρέφεται μόνο ένα bit. Σε σφάλματα double0bit, δύο bit ανατρέπονται. Τα δύο bit δεν χρειάζεται να αντιστραφούν στο ίδιο περιστατικό, το δεύτερο bit-flip πρέπει να συμβεί μόνο πριν διορθωθεί το πρώτο αναποδογυρισμένο bit.
Ένα επιπλέον bit ισοτιμίας από αυτό που απαιτείται περιλαμβάνεται στους κωδικούς διόρθωσης σφαλμάτων Hamming. Αυτό το επιπλέον bit ισοτιμίας δίνει στον κώδικα τη δυνατότητα να ανιχνεύει την εμφάνιση σφαλμάτων διπλού bit, ωστόσο, αυτά τα σφάλματα δεν μπορούν να διορθωθούν.
Η διαδικασία εκτέλεσης της ανίχνευσης και της διόρθωσης σφαλμάτων εκτελείται στον ελεγκτή μνήμης στο στικ RAM.
Διαθεσιμότητα και υποστήριξη καταναλωτή
Το μεγαλύτερο μέρος του υλικού υπολογιστών καταναλωτικής ποιότητας δεν υποστηρίζει μνήμη ECC. Αυτό είναι εν μέρει ως μέθοδος τεχνητής διάκρισης του υλικού διακομιστή από το υλικό του καταναλωτή. Η ECC RAM, ωστόσο, κοστίζει περισσότερο και λειτουργεί ελαφρώς πιο αργά. Επιπλέον, η πρόσθετη σταθερότητα που θα παρείχε στους οικιακούς καταναλωτές είναι ελάχιστη, καθώς τα σφάλματα αναστροφής bit δεν είναι η κύρια αιτία σφαλμάτων του συστήματος.
Κανένας από τους επεξεργαστές καταναλωτών και ενθουσιωδών επεξεργαστών της Intel δεν υποστηρίζει μνήμη ECC, μόνο οι CPU της κατηγορίας διακομιστή, όπως οι επεξεργαστές της σειράς Xeon. Οι CPU καταναλωτικής ποιότητας της AMD δεν υποστηρίζουν ECC, ωστόσο, οι CPU του σταθμού εργασίας και του διακομιστή, Threadripper και EPYC αντίστοιχα, υποστηρίζουν μνήμη ECC.