Οι δίσκοι SSD (Solid State Drives) έχουν μπει για τα καλά πλέον στη ζωή μας, μιας και τα τελευταία χρόνια οι τιμές τους πέσανε-επιτέλους-σε λογικά επίπεδα επιτρέποντας σε περισσότερους χρήστες την αγορά τους. Μετά τον πρώτο 32 bit επεξεργαστή Intel 80386 που έφερε τα πάνω-κάτω στις επιδόσεις των τότε υπολογιστών, οι δίσκοι SSDs υπήρξαν το επόμενο υποσύστημα που επέφερε μια τόσο μεγάλη διαφορά στις συνολικές επιδόσεις ενός συστήματος. Πριν την εμφάνιση τους στους κοινούς υπολογιστές desktop, οι απλοί HDDs (Hard Disk Drives) ήταν ο κύριος περιοριστικός παράγοντας για ένα σύστημα (bottleneck στα Αγγλικά), οπότε και πολλοί χρήστες που ξόδεψαν μια μικρή περιουσία για την απόκτηση ενός από τους πρώτους SSDs, εντυπωσιάστηκαν από τη τεράστια διαφορά σε επιδόσεις.
Παρόλο που οι πρώτοι SSDs χρονολογούνται από τα μέσα της δεκαετίας του 1970, στην ευρεία αγορά έγιναν διαθέσιμοι μόλις το 2007 με τα 2.5” και 3.5” μοντέλα της Mtron και Memoright. Οι τότε SSDs που προορίζονταν για τους απλούς χρήστες είχαν χωρητικότητες της τάξης των 32-64 GB και ταχύτητες που μόλις ξεπερνούσαν τα 100 MB/S. Ενδεικτικά ο Mtron Pro 7500 σε 3.5” όταν πρωτοκυκλοφόρησε κόστιζε 1300 δολάρια!
Βασικές διαφορές HDDs με SSDs
Το πιο προφανές είναι ότι οι SSDs είναι πολύ πιο γρήγοροι, αλλά οι διαφορές τους προφανώς δε σταματούν εκεί. Ένας HDD διαθέτει περιστρεφόμενες πλάκες (plates) με μαγνητική επίστρωση, πάνω στις οποίες αποθηκεύονται οι πληροφορίες. Τα δεδομένα από τις πλάκες των HDDs διαβάζονται μέσω ενός βραχίονα (arm), καθώς οι παραπάνω περιστρέφονται σε υψηλές ταχύτητες. Υψηλότεροι ρυθμοί περιστροφής προσφέρουν όπως είναι φυσικό και μεγαλύτερες ταχύτητες διαμεταγωγής δεδομένων. Το όλο σύστημα λόγω κατασκευής είναι ιδιαίτερα ευαίσθητο σε δονήσεις και απαιτεί και κάποιον όγκο ειδικά αν θέλουμε μεγάλη χωρητικότητα, οπότε αυξάνεται και η διάμετρος των plates.
Ένας SSD τώρα μπορεί να προσφέρει την ίδια χρηστικότητα με έναν HDD, αλλά το κάνει με έναν εντελώς διαφορετικό τρόπο. Έτσι αντί τα δεδομένα να αποθηκεύονται στα μαγνητικά στρώματα περιστρεφόμενων plates, για τον ίδιο σκοπό χρησιμοποιούνται τσιπάκια μνήμης (flash memory chips) τα οποίο έχουν τη δυνατότητα διατήρησης των δεδομένων ακόμη και με απουσία ισχύος, κάτι που δεν ισχύει σε άλλα flash chips όπως αυτά της μνήμης RAM του υπολογιστή μας. Οπότε η πρώτη μεγάλη διαφορά μεταξύ των HDDs και των SSDs είναι ότι οι δεύτεροι δε διαθέτουν κινούμενα μέρη, οπότε και έχουν μεγαλύτερη αξιοπιστία και επίσης είναι πιο κατάλληλοι για φορητούς υπολογιστές. Επιπλέον οι SSDs απαιτούν πολύ μικρότερη ενέργεια σε σχέση με τους HDDs, για τη λειτουργία τους. Τέλος, προσφέρουν πολύ μεγαλύτερη ταχύτητα και ταυτόχρονα κατά πολύ μικρότερο χρόνο προσπέλασης στα δεδομένα. Βλέπετε στους HDDs ο βραχίονας θα πρέπει να πάει στο σημείο που βρίσκονται τα δεδομένα ενώ ο χρόνος αυτός καθυστέρησης δεν υπάρχει στους SSDs, που στερούνται κινούμενων μερών. Τέλος, οι μνήμες των τελευταίων είναι πολύ πιο γρήγορες από τις περιστρεφόμενες πλάκες των HDDs.
Η Λειτουργία της Μνήμης των SSDs με Απλά Λόγια
Όλοι οι SSDs χρησιμοποιούν όπως προείπαμε flash μνήμες για την αποθήκευση δεδομένων. Ο συγκεκριμένος τύπος μνήμης πολύ συνοπτικά αποτελείται από κελιά μνήμης (memory cells) τα οποία αποτελούνται από τρανζίστορ με επιπλέουσες πύλες (floating gates). Τα συγκεκριμένα τρανζίστορ μπορούν να κρατήσουν ηλεκτρικά φορτία και διαφέρουν από τα MOSFET (Metal Oxide Semiconductor Field Effect Transistor) ή τρανζίστορ επίδρασης πεδίου διότι διαθέτουν δύο πύλες αντί μόνο μίας. Η πρώτη είναι η πύλη ελέγχου και η δεύτερη η επιπλέουσα πύλη. Η τελευταία περιβάλλεται από ένα μονωτικό στρώμα διοξειδίου του πυριτίου (τα πιο σύγχρονα fets χρησιμοποιούν πλέον οξυνιτριδίο του πυριτίου ως μονωτικό), οπότε και είναι σε θέση να παγιδεύει ηλεκτρόνια για πολύ μεγάλο διάστημα, χωρίς την παρουσία κάποιας πηγής ισχύος. Έτσι λοιπόν η μνήμη τύπου flash έχει τη δυνατότητα διατήρησης των δεδομένων ακόμη και όταν σταματήσουμε την παροχή ενέργειας προς αυτήν. Με τον καιρό όμως αυτό το στρώμα μόνωσης εξασθενεί οπότε και τα ηλεκτρόνια αρχίζουν και διαφεύγουν από την επιπλέουσα πύλη, οπότε και το συγκεκριμένο κελί μνήμης αχρηστεύεται. Αυτό συμβαίνει λοιπόν μετά από έναν αριθμό (συνήθως πολύ μεγάλο) εγγραφών σε έναν SSD.
Όταν προγραμματίζουμε ένα κελί μνήμης στην ουσία διοχετεύουμε τάση προς την πύλη ελέγχου, τη στιγμή που η πηγή του τρανζίστορ (source) και η υποδοχή (drain) έχουν μηδενική τάση. Η τάση που εφαρμόζουμε στην πύλη δημιουργεί ένα ηλεκτρικό πεδίο, το οποίο επιτρέπει στα ηλεκτρόνια να διοχετευτούν μέσω του στρώματος διοξειδίου του πυριτίου από το δίαυλο τύπου Ν (N- Channel) προς την επιπλέον τα πύλη. Το στρώμα του διοξειδίου του πυριτίου δρα ως μονωτικό υλικό και δεν επιτρέπει την είσοδο και έξοδο ηλεκτρονίων από την επιπλέουσα πύλη, εκτός και αν σχηματιστεί ένα ηλεκτρικό πεδίο ξανά. Για να διαγράψουμε ένα κελί μνήμης πρέπει να εφαρμόσουμε τάση στο υπόστρωμα πυριτίου και να κρατήσουμε την τάση της πύλης ελέγχου στο μηδέν. Έτσι ένα πεδίο θα σχηματιστεί το οποίο θα επιτρέψει στα ηλεκτρόνια να περάσουν μέσα από το μονωτικό υλικό του στρώματος διοξειδίου του πυριτίου. Για αυτό το λόγο, για να γράψουμε ξανά δεδομένα σε ένα κελί μνήμης flash πρέπει πρώτα να ξεφορτωθούμε τα παλιά, έτσι ώστε να υπάρχει χώρος για να μπουν τα καινούρια, τα οποία και αναπαριστούν τα νέα δεδομένα που θέλουμε να αποθηκεύσουμε.
Όταν εφαρμόσουμε ένα φορτίο στην επιπλέουσα πύλη τότε τα ηλεκτρόνια αναγκάζονται, από το στρώμα οξειδίου, να δημιουργήσουν ένα φράγμα από αρνητικά φορτισμένα ηλεκτρόνια μεταξύ της πύλης ελέγχου και της επιπλέουσας. Έτσι παρατηρώντας τον τύπο του φορτίου μπορούμε να διακριβώσουμε αν η επιπλέουσα πύλη είναι θετικά φορτισμένη (περιέχει δεδομένα) ή αρνητικά (σβησμένη). Έτσι διαβάζουμε δεδομένα από τη μνήμη flash.
Τύποι Μνημών που Χρησιμοποιούνται στους Σημερινούς SSDs
Οι SSDs χρησιμοποιούν διάφορους τύπους μνημών με τους πιο διαδεδομένους να είναι οι SLC, MLC και TLC.
(SLC Single Level Cell)
Αυτά τα κελιά μνήμης μπορούν να αποθηκεύσουν ένα bit το καθένα, οπότε και έχουμε μόνο δύο καταστάσεις: προγραμματισμένο (0) και διαγραμμένο (1). Αυτές οι καταστάσεις εξακριβώνονται από το επίπεδο της τάσης του κάθε κελιού μνήμης. Οι μνήμες τύπου SLC έχουν μεγαλύτερες ταχύτητες εγγραφής από τους υπόλοιπους τύπους και συνάμα προσφέρουν μεγαλύτερη διάρκεια ζωής καθώς και χαμηλότερη κατανάλωση ενέργειας. Από την άλλη όμως αποθηκεύουν μικρότερο όγκο δεδομένων στον ίδιο αριθμό κελιών οπότε και το κόστος παραγωγής ανεβαίνει κατακόρυφα. Σήμερα αυτός ο τύπος μνημών flash χρησιμοποιείται μόνο για επαγγελματικών σκοπών SSDs, καθώς και για υψηλής απόδοσης κάρτες μνήμης.
MLC (Multi Level Cell)
Όπως αναφέρεται και στην ονομασία τους, αυτά τα κελιά μπορούν να αποθηκεύσουν δύο bit, δηλαδή τέσσερις καταστάσεις: 00 (πλήρες προγραμματισμένο), 01 (μερικός προγραμματισμένο), 10 (μερικός σβησμένο) και 11 (πλήρες διαγραμμένο). Τα μόνο πλεονεκτήματα των MLC έναντι των SLC είναι το χαμηλότερο κόστος και η δυνατότητα αποθήκευσης περισσότερων δεδομένων στον ίδιο αριθμό κελιών. Το μεγαλύτερο μειονέκτημα είναι η μικρότερη διάρκεια ζωής, αλλά με τις σύγχρονες μεθόδους κατασκευής αυτή έχει αυξηθεί σημαντικά οπότε και δεν παίζει μεγάλο ρόλο πια για τον απλό χρήστη.
ΤLC (Triple Level Cell)
Στις TLC μνήμες τα κελιά μπορούν να αποθηκεύσουν τρία bit, οπότε και έχουν οχτώ καταστάσεις (000, 001, 010, 011, 100, 101, 110 και 111). Οπότε και οι μνήμες αυτού του τύπου έχουν αυξημένη χωρητικότητα σε σχέση με τις MLC και φυσικά της SLC, αλλά από την άλλη έχουν μικρότερη διάρκεια ζωής και επίσης ο προγραμματισμός καθώς και η ανάγνωση δεδομένων από αυτές απαιτούν περισσότερο χρόνο. Οι Samsung EVO SSDs χρησιμοποιούν TLC flash μνήμες.
Παράδειγμα Προγραμματισμού SLC, MLC & TLC
Έστω ότι έχουμε ένα κελί μνήμης SLC το οποίο δέχεται τάσεις μεταξύ 0 και 11V. Για να προγραμματίσουμε το κελί στην κατάσταση “1” έστω ότι πρέπει να εφαρμόσουμε τάση στην πύλη ελέγχου μεταξύ 1V και 2V ενώ για την κατάσταση “0” ή τάση πρέπει να είναι μεταξύ 9V και 10V. Οπότε υπάρχει ένα κενό 7V στη χειρότερη περίπτωση μεταξύ των δύο παραπάνω τάσεων, που προγραμματίζουν τις αντίστοιχες καταστάσεις. Για τις MLC μνήμες αυτό το κενό πέφτει στα 2V λόγω των περισσότερων καταστάσεων και της ανάγκης ύπαρξης τεσσάρων διαφορετικών ζωνών τάσης (1-2V, 4-5V, 7-8V, 10-11V), ενώ στις TLC μνήμες τα πράγματα γίνονται ακόμη πιο δύσκολο με το κενό μεταξύ των τάσεων προγραμματισμού να μειώνεται δραματικά. Θα αναρωτιέστε τώρα που χρειάζεται αυτό το κενό ανάμεσα στις παραπάνω τάσεις.
Όσο το μονωτικό στρώμα διοξειδίου του πυριτίου φθείρεται απαιτείτε μεγαλύτερη τάση προγραμματισμού, οπότε για το παράδειγμα που δώσαμε παραπάνω για την SLC μνήμη θα απαιτείται σε κάποια χρονική στιγμή 1-3V αντί για 1-2V, κάτι που δεν αποτελεί πρόβλημα μιας και το κενό ανάμεσα στις δύο καταστάσεις προγραμματισμού για τις SLC είναι 7V, οπότε και υπάρχει αρκετά μεγάλο διάστημα. Στις MLC μνήμες όμως μειώνεται στο μισό και στις TLC 1V αύξηση του κενού σημαίνει απλά και την καταστροφή του αντίστοιχο κελιού. Για αυτό λοιπόν οι SLC μνήμες διαρκούν περισσότερο, ενώ αντίθετα οι TLC προσφέρουν τη μικρότερη διάρκεια ζωής (δηλαδή λιγότερες εγγραφές).
Απόδοση των SSDs
Από όλα τα παραπάνω πιστεύουμε ότι λάβατε μια καλή ιδέα του τι συμβαίνει μέσα σε έναν SSD δίσκο. Ας πάμε τώρα και στο ζουμί του παρόντος άρθρου, που δεν είναι άλλο από την αναφορά στους πιο σημαντικούς τομείς απόδοσης ενός SSDs. Αναφέρουμε τομείς γιατί δεν είναι μόνο ένας ο τομέας στον οποίο πρέπει να αποδίδει καλά ένας SSD.
Καταρχήν θα πρέπει να τονίσουμε ότι η απόδοση ενός SSD αλλάζει (προς τα κάτω) με το χρόνο και εξαρτάται άμεσα από τον αριθμό των εγγραφών που πραγματοποιούμε σε αυτόν. Όταν ένας SSD είναι καινούριος τότε παρουσιάζει και την κορυφαία απόδοση του ενώ όσο περισσότερο τον χρησιμοποιούμε, τότε η απόδοση του πέφτει διαρκώς για να φτάσει σε αυτό που ονομάζουμε Steady State κατάσταση, δηλαδή το σημείο στο οποίο οι ταχύτητες σταθεροποιούνται και δεν πέφτουν περισσότερο αλλά παραμένουν στα ίδια επίπεδα. Βέβαια με λειτουργίες όπως η Trim, που σβήνει τα κελιά μνήμης που δεν έχουν πια αποθηκευμένα δεδομένα, καθώς και το ενσωματωμένο στο λειτουργικό του κάθε SSD Garbage Collector, η Steady State κατάσταση επιβραδύνεται και ο SSD ανακτά πάλι ένα μεγάλο ποσοστό από τις αρχικές του επιδόσεις. Η τελευταία λειτουργία που αναφέραμε παραπάνω, Garbage Collector, στην ουσία χαρτογραφεί σημεία της μνήμης με άκυρα πλέον δεδομένα (invalid data) και όταν ο δίσκος βρίσκεται σε κατάσταση ηρεμίας τότε τα διαγράφει εντελώς έτσι ώστε να είναι ελεύθερα για μελλοντικές εγγραφές.
Εδώ να σημειώσουμε ότι το Steady State τεστ που τρέχουμε στις δοκιμές μας λαμβάνει υπόψη την απολύτως χειρότερη κατάσταση μιας και γεμίζει εντελώς την επιφάνεια του δίσκου με δεδομένα οπότε και η εντολή Trim και η λειτουργία του Garbage Collector είναι στην ουσία άχρηστα, κάτι που σημαίνει ότι ο SSD πρέπει την ίδια στιγμή να σβήνει παλιά δεδομένα και αμέσως μετά να γράφει από πάνω. Επίσης να τονίσουμε ότι όταν θέλετε να επαναφέρετε το δίσκο σας στην αρχική του κατάσταση και δεδομένου ότι δεν υπάρχουν κατεστραμμένα κελιά μνήμης, τότε το μόνο που έχετε να κάνετε είναι ένα secure erase.
Μέτρηση της Απόδοσης ενός SSD
Η απόδοση τόσο των HDDs όσο και των SSDs μπορεί να δοθεί μέσα από τρεις βασικές μετρήσεις, τις οποίες και θα αναλύσουμε παρακάτω.
IOPS (Input/Output Operations Per Second): Αφορά των αριθμό των συναλλαγών/εντολών που μπορούν να εκτελεστούν από το δίσκο σε ένα προκαθορισμένο διάστημα (συνήθως δευτερόλεπτα). Τα IOPS μπορούν εύκολα να μετατραπούν σε MB/s. Ένα παράδειγμα για να καταλάβετε καλύτερα το τι αναπαριστούν τα IOPS είναι όταν εκτελούμε εκκίνηση στο λειτουργικό σύστημα, κατά τη διάρκεια της οποίας εκτελούνται πολλές αναγνώσεις μικρών αρχείων (καθώς και εγγραφές). Εκεί ένας δίσκος με υψηλά IOPS θα προσφέρει μικρό χρόνο εκκίνησης. Το ίδιο ισχύει και για τις περισσότερες διεργασίες των Windows, που συνήθως έχουν να κάνουν με την ανάγνωση και εγγραφή μικρών αρχείων δεδομένων.
Throughput: Είναι ο ρυθμός μεταφοράς δεδομένων ή το εύρος ζώνης (bandwidth). Συνήθως μετράται σε MB/s. Ένα παράδειγμα που εξηγεί καλύτερα την έννοια του throughput είναι όταν κάνουμε streaming ένα πολύ μεγάλο αρχείο βίντεο ή φορτώνουμε ένα μεγάλο βίντεο για επεξεργασία στο Adobe Premiere.
Response Time(Latency): Ο χρόνος απόκρισης του δίσκου σε κάποια IO λειτουργία. Αναφέρεται με άλλα λόγια στο χρόνο που απαιτείται για την μεταφορά μιας εντολής του χρήστη προς το δίσκο και περιλαμβάνει και το χρόνο επιστροφής της. Ο χρόνος μέτρησης της είναι millisecond ή microseconds. Ο χρόνος απόκρισης επηρεάζει το πόσο θα περιμένουμε όταν θέλουμε να βρούμε, φορτώσουμε ή να σώσουμε ένα συγκεκριμένο αρχείο. Στέλνουμε δηλαδή την εντολή προς το αποθηκευτικό σύστημα (τον SSD ή τον HDD του συστήματος) και περιμένουμε μέχρι να την επεξεργαστεί και να την εκτελέσει.
Random & Sequential Reads/Writes: Ένας άλλος παράγοντας που επηρεάζει τις επιδόσεις είναι όταν οι εγγραφές ή οι αναγνώσεις που πραγματοποιούμε είναι διαδοχικές (sequential) η τυχαίες (random). Για παράδειγμα μια λειτουργία ανάγνωσης είναι διαδοχική όταν ξεκινά από μια συγκεκριμένη τοποθεσία (Logical Block Address ή LBA) και συνεχίζει στο αμέσως επόμενο LBA αντί να πηγαίνει σε κάποιο άλλο. Αντιθέτως, όταν μια I/O λειτουργία ξεκινά από άλλη τοποθεσία και όχι σε αυτήν που βρίσκεται κοντύτερα στο τελευταίο LBA που προσπελάστηκε από την προηγούμενη IO, τότε η συγκεκριμένη IO θεωρείται τυχαίας προσπέλασης.
SSD Partition Alignment: Tο μέγεθος των μπλοκ δεδομένων παίζει μεγάλο ρόλο για τις επιδόσεις ενός δίσκου και ειδικά στους SSDs τα μπλοκ θα πρέπει να είναι ευθυγραμμισμένα με τα κελιά των flash μνημών. Για παράδειγμα έναν μπλοκ των 4 KB θα πρέπει να ταιριάζει απόλυτα με ένα 4 KB NAND και όχι να επεκτείνεται σε δύο NAND. Τέλος, σημαντικό ρόλο παίζει και το τι τύπου IO εκτελούνται από το δίσκο, δηλαδή αν αυτές είναι μόνο εγγραφές δεδομένων, μόνο αναγνώσεις ή μίξη και των δύο. Σε γενικές γραμμές οι αναγνώσεις στους SSDs είναι γρηγορότερες από τις εγγραφές, μιας και στους SSD ένα ήδη γραμμένο κελί μνήμης δεν μπορεί να επανεγγραφεί χωρίς να διαγραφούν τα δεδομένα του πρώτα (οπότε και απαιτούνται περισσότερες από μία IO εργασίες).
Επίλογος
Σκοπός του παρόντος άρθρου ήταν να αναφέρει μερικά βασικά στοιχεία που έχουν να κάνουν με τη λειτουργία των SSDs καθώς και με τη μέτρηση των επιδόσεων τους. Είμαι σίγουρος ότι πολλοί από εσάς ακούτε και διαβάζεται για IOPs χωρίς στην ουσία να καταλαβαίνετε τι σημαίνουν στην πράξη. Ελπίζω να κατάφερα μέσα από όλα τα παραπάνω να εμπλούτισα τις γνώσεις σας και να κέντρισα το ενδιαφέρον σας για παραπάνω μελέτη και ψάξιμο πάνω στο θέμα των Solid State Drives, που υπήρξαν ίσως η μεγαλύτερη καινοτομία της δεκαετίας στον τομέα του υλικού (hardware) υπολογιστών. Ένα είναι το σίγουρο, η τεχνολογία των SSDs ήρθε για να μείνει και σε λίγο καιρό οι HDDs δε θα μπορούν να τους ανταγωνιστούν ούτε στον τομέα της χωρητικότητας, όπου μέχρι στιγμής έχουν τα σκήπτρα. Τα νέα τρισδιάστατα τσιπάκια μνήμης, όπως τα V-NAND της Samsung ,δεν επιτρέπουν μόνο αυξημένες επιδόσεις και αξιοπιστία, αλλά και την επίτευξη τεράστιων χωρητικοτήτων τις οποίες λόγο μεγέθους και τεχνολογίας οι HDDs δε θα μπορούν να ανταγωνιστούν κάποια στιγμή.
Σύνταξη: crmaris
Επιμέλεια κειμένου: Γιάννης Καραγιάννης
- 1