TopΛεξικό τεχνικών όρωνNCQ (Native Command Queuing) – φυσική εντολή αναμονής

NCQ (Native Command Queuing) – φυσική εντολή αναμονής

H NCQ είναι μία επέκταση λογισμικού της διεπαφής SATA που βασίζεται στην αναμονή εντολών εγγραφής/ανάγνωσης (I/O) με τέτοιο τρόπο έτσι ώστε να αυξηθεί η απόδοση (αριθμός ενεργειών I/O ανά δευτερόλεπτο) τόσο των δίσκων HDD, όσο και SSD.

 

Στους παραδοσιακούς σκληρούς δίσκους (HDD) αυτό γίνεται με την αποθήκευση σε ενδιάμεση μνήμη buffer έως και 32 εντολών και τακτοποίησή τους σε σειρά έτσι ώστε ο δίσκος να εκτελεί εντολές με ελάχιστο αριθμό περιστροφών των εσωτερικών δίσκων και κινήσεων της κεφαλής. Αυτό μειώνει το χρόνο που απαιτείται για την εκτέλεση λειτουργιών I/O και επιβραδύνει τη γήρανση των ηλεκτρομηχανικών στοιχείων του δίσκου.

 

Εικ. 1. Εκτέλεση εργασιών ανάγνωσης/εγγραφής από δίσκους: (α) χωρίς NCQ, (β) με NCQ

 

Ο δίσκος που παρουσιάζεται στην εικ. 1 εκτελεί λειτουργίες I/O: (α) με ανενεργή λειτουργία NCQ – σε ακολουθία από A έως F, εκτελώντας 3,5 περιστροφές δίσκων (β) με λειτουργία NCQ – σε ακολουθία C → A → B → D → F → E κατά την εκτέλεση σχεδόν 2 περιστροφών δίσκου.

 

Η NCQ είναι η εξέλιξη της ιδέας αναμονής που χρησιμοποιείται στην τεχνολογία TCQ (Tagged Command Queuing) εφαρμοσμένη προηγουμένως στους δίσκους SCSI και στη συνέχεια στους δίσκους ATA και εν μέρει στους SATA-I. Διαφέρει από την αρχική κυρίως στον αριθμό των ταυτόχρονα επεξεργαζόμενων εργασιών I/O καθώς και ότι η NCQ επιτρέπει την έκδοση επόμενης εντολής από το host κατά την διάρκεια λειτουργίας του HDD σε διαφορετική εργασία.
Η φυσική εντολή αναμονής εισήχθη μετά την εμφάνιση των δίσκων με διεπαφή SATA-II (αργότερα εφαρμοσμένη σε τμήματα δίσκων SATA-I).

 

Για την λειτουργικότητα της NCQ είναι υπεύθυνα τρία βασικά πρωτόκολλα:

- Μηχανισμός επιστροφής κατάστασης διαδικασίας (Status Return Mechanism) – η λειτουργία αυτή επιτρέπει την μεταφορά δεδομένων σχετικά με την ολοκλήρωση οποιασδήποτε (μίας ή πολλών) προγραμματισμένων εργασιών. Το host δεν ενημερώνεται πλέον για την έναρξη επεξεργασίας της διαδικασίας I/O, αλλά μόνο για την ολοκλήρωσή της.

- Περιορισμός του αριθμού των διακοπών μέχρι ενός για μια προγραμματισμένη εργασία I/O (Interrupt Aggregation) – το host θα πρέπει να ενημερώνεται για την ολοκλήρωση κάθε εκτελεσμένης εντολής I/O. Οι εργασίες που αφορούν δεδομένα που περιέχονται φυσικά κοντά μεταξύ τους στον δίσκο, ομαδοποιούνται και μπαίνουν σε σωστή σειρά. Αυτό οδηγεί σε μια κατάσταση κατά την οποία πολλές εντολές εισόδου/εξόδου I/O τερματίζουν ταυτόχρονα ή σε σύντομο διάστημα. Επομένως είναι δυνατή η αποστολή πληροφοριών τερματισμού, π.χ. όλων των 32 εργασιών σε ένα πακέτο 64 bits αντί για 64 πακέτα, όπως θα γινόταν χωρίς NCQ. Στον SATA-I και στον ATA απαιτούνταν δυο διακοπές για κάθε εκτελεσμένη εργασία I/O (μια κατά την έναρξη και μια κατά την λήξη της εντολής).

- Μηχανισμός άμεσης πρόσβασης στην κύρια μνήμη (First Party DMA – FPDMA) – Η NCQ έχει σχεδιαστεί με τέτοιο τρόπο ώστε ο HDD να μπορεί να επιλέξει ποια εργασία σχετική με την μεταφορά δεδομένων θα εκτελείται ως επόμενη. Ο δίσκος στέλνει ένα tag/αναγνωριστικό εντολής I/O στον ελεγκτή μνήμης του host. Εκτελεί την ίδια στιγμή "κράτηση" χώρου για τα δεδομένα προσωρινής αποθήκευσης απευθείας στην κύρια μνήμη. Με αυτό τον τρόπο ο δίσκος είναι σε θέση να αλλάξει αποτελεσματικά την σειρά των εν λόγω εντολών, καθώς μπορεί να εμποδίσει το χώρο για την ενδιάμεση μνήμη χωρίς να συμπεριλαμβάνεται λογισμικό του host.

 

Στην διεπαφή SATA-III έχουν υπάρξει πολλές αλλαγές στην λειτουργικότητα της NCQ. Έχει βελτιωθεί μεταξύ άλλων η διαχείριση αναμονής και έχουν προστεθεί εντολές για καλύτερη λειτουργία μετάδοσης ροών με περιεχόμενο πολυμέσων, επιτρέποντας στον host να μεταδίδει πληροφορίες ή ποιες εργασίες πρέπει να σταματήσουν και σε ποιες πρέπει να δοθεί προτεραιότητα. Ως αποτέλεσμα παρουσιάστηκε μια γενική βελτίωση της απόδοσης του συστήματος και όχι μόνο αύξηση του αριθμού των εκτελεσμένων από τον δίσκο λειτουργικών I/O ανά δευτερόλεπτο.
Εφαρμόστηκε επίσης μια ισόχρονη μεταφορά δεδομένων, επιτρέποντας την ομαλή μετάδοση σε εφαρμογές υψηλής απόδοσης (audio/video) καθώς και παράλληλη μεταφορά εργασιών χαμηλότερης προτεραιότητας.

 

Η NCQ εφαρμοσμένη στην διεπαφή SATA-II μπορεί επίσης να επηρεάσει αρνητικά την εκτέλεση ορισμένων προγραμματισμένων εργασιών I/O, προκαλώντας πτώση στην απόδοση του λειτουργικού συστήματος. Ο αλγόριθμος αυτός δεν είχε καθορισμένους χρόνους για την εκτέλεση μεμονωμένων λειτουργιών I/O. Επίσης ο αριθμός μεταφορών μιας συγκεκριμένης προγραμματισμένης εργασίας I/O στο τέλος της αναμονής δεν ήταν περιορισμένος. Η εκτέλεση μιας εντολής I/O θα μπορούσε επομένως να καθυστερήσει με το χρόνο λόγω άλλων νέων ερωτημάτων, οδηγώντας στην λεγόμενη διαδικασία υποσιτισμού
Τέτοια κατάσταση παρατηρήθηκε στο λειτουργικό σύστημα LINUX με μητρική συστοιχία RAID-5. Κατά τη διάρκεια της δοκιμής η εργασία με χαμηλή προτεραιότητα εκτελέστηκε μετά από 57 118 ms (με ανενεργή NCQ μετά από 2 021 ms). Το 2008 η Google Inc. πραγματοποίησε μια σειρά εσωτερικών δοκιμών που έδειξαν ότι υπό συγκεκριμένες συνθήκες, η εκτέλεση ορισμένων προγραμματισμένων διαδικασιών I/O μπορεί να καθυστερήσει ακόμη και 2 δευτερόλεπτα (ανεξάρτητα από το λειτουργικό σύστημα).
Τα παραπάνω προβλήματα επιλύθηκαν με την εμφάνιση της διεπαφήςSATA-III – και την προσθήκη υποεντολής "Deadline Handling" στην διαχείριση, η οποία ελέγχει τις προθεσμίες για την λειτουργία I/O χαμηλότερης προτεραιότητας.

 

Λόγω της κατασκευής των δίσκων SSD (πολλά τσιπ μνήμης NAND συνδεδεμένα σε ένα ελεγκτή και απουσία μηχανικών στοιχείων) οι εργασίες NCQ εκτελούνται με εναλλάξ τρόπο – μέσω της λεγόμενης βαθιάς αναμονής ουράς. Αυτή βασίζεται στην ομαδοποίηση των προγραμματισμένων εργασιών I/O και στην ταυτόχρονη εκτέλεση αυτών σε πολλά τσιπ μνήμης NAND.

 

Η NCQ υποστηρίζεται μόνο σε περίπτωση συνεργασίας HDD/SSD με ελεγκτή δίσκων που υποστηρίζουν αυτή την τεχνολογία.