ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Υποσύστημα εισόδου εξόδου Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Υπο- σύστημα εισόδου- εξόδου (Ι/Ο) Αρης Ευθυμίου
Το σημερινό μάθημα! Εισαγωγή είδη, χαρακτηριστικά συσκευών! Προγραμματιστικό μοντέλο I/O Λ.Σ. και Ι/Ο memory mapped I/O, ειδικές εντολές polling interrupt driven I/O DMA! Υλοποίηση συστήματος Ι/Ο 2
Υποσύστημα εισόδου/εξόδου 3
Σημασία I/O! Απαραίτητο για αλληλεπίδραση με Η/Υ! Παρέχει στον υπολογιστή «μόνιμη» αποθήκευση! Μεγάλο πεδίο για πολλές και ενδιαφέρουσες εφαρμογές 4
Συσκευές εισόδου- εξόδου! Τεράστια ποικιλία 8 τάξεις μεγέθους διαφορά στο ρυθμό μεταφοράς 5
Σημαντικά χαρακτηριστικά! Αξιοπιστία (dependability) εξαιρετικά σημαντικός παράγοντας για πολλές συσκευές I/O π.χ. σύγκριση «ενόχλησης» από υπολογιστή που κολάει, κατεστραμένο σκληρό δίσκο! Κόστος! Επεκτασιμότητα στα περισσότερα είδη υπολογιστών εξαιρετικά σημαντικό σε servers! Επίδοση (performance) χρόνος απόκρισης (response pme, latency) ρυθμός διεκπεραίωσης (I/O bandwidth) 6
Επίδοση (performance) Ι/Ο Δύο μέτρα ρυθμού διεκπεραίωσης: 1. Ποσότητα δεδομένων που μεταφέρεται ανά μονάδα χρόνου (data rate) σημαντικό για «μεγάλες» προσπελάσεις 2. Αριθμός προσπελάσεων I/O ανά μονάδα χρόνου (Ι/Ο rate) σημαντικό για πολλές «μικρές» προσπελάσεις! Χρόνος απόκρισης εξαρτάται από το ρυθμό π.χ. απόκριση κλήσης συστήματος διαβάσματος αρχείου:! χρόνος αναζήτησης αρχείου! χρόνος μεταφοράς δεδομένων στη μνήμη 7
Χαρακτηριστικά I/O ανά είδος Η/Υ! Είδη υπολογιστών ενσωμματωμένοι (embedded), προσωπικοί (desktop/laptop), server (εξυπηρετητές)! Συσκευές όλων των ειδών Η/Υ: αξιοπιστία, κόστος! Ενσωμματωμένοι, προσωπικοί χρόνος απόκρισης, ποικιλία συσκευών! Servers ρυθμός διεκπεραίωσης επεκτασιμότητα 8
Προγραμματιστικό μοντέλο I/O συχνά αναφέρεται ως δίαυλος (bus)! Μοιάζει πολύ με αυτό της μνήμης: οι συναλλαγές (Ι/Ο transacpons) ξεκινούν από τον επεξεργαστή! συχνός όρος master για το εξάρτημα που κατευθύνει τη συναλλαγή Δίνεται μια διεύθυνση, και τα δεδομένα είτε:! διαβάζονται είσοδος από το περιφερειακό! γράφονται έξοδος στο περιφερειακό 9
Εμπλοκή του Λ.Σ.! Πολλαπλοί χρήστες, διεργασίες μοιράζονται το υποσύστημα Ι/Ο! Τα περιφερειακά συχνά προκαλούν διακοπές (interrupts, exceppons) αυτόματη αλλαγή σε κατάσταση συστήματος, εκτέλεση υπορουτινας χειρισμού (interrupt handler)! Πολύπλοκη διαχείριση συσκευών σε χαμηλό επίπεδο απαιτεί τη διαχείριση μιας σειράς ταυτόχρονων συμβάντων λεπτομερείς απαιτήσεις για σωστό έλεγχο της συσκευής 10
Ο ρόλος του Λ.Σ.! Εγγυάται ότι το προγραμμα χρήστη έχει πρόσβαση μόνο σε περιφερειακά (ή μέρη τους) όπου επιτρέπεται! Παρέχει υπορουτίνες για χαμηλού επιπέδου χειρισμό περιφερειακών! Προσπαθεί να παρέχει ισότιμη πρόσβαση στα μοιραζόμενα περιφερειακά, αλλά και να προγραμματίσει (schedule) τις προσβάσεις ώστε να επιτευχθεί υψηλός ρυθμός διεκπεραίωσης 11
Επικοινωνία Λ.Σ. - συσκευών! Επίδοση εντολών στη συσκευή όχι μόνο ανάγνωση/εγγραφή αλλά και εργασίες της συσκευής, π.χ. αναζήτηση αρχείου στο δίσκο (seek)! Ενημέρωση (nopficapon) του Λ.Σ. από τη συσκευή π.χ. ολοκλήρωση μιας εργασίας, αντιμετώπιση λάθους! Μεταφορά δεδομένων μεταξύ μνήμης συσκευής και προς τις δύο κατευθύνσεις ανάλογα με τη συσκευή 12
Επίδοση εντολών σε συσκευή Δύο τρόποι με τους οποίους ο επεξεργαστής απευθύνεται σε μια συσκευή (address a device)! memory mapped I/O μέρος του χώρου διευθύνσεων (address space) αντιστοιχεί στις συσκευές αναγνώσεις και εγγραφές (load, store) του επεξεργαστή ερμηνεύονται από τη συσκευή ώς εντολές πρός τη συσκευή μηχανισμός μετάφρασης εξασφαλίζει ότι μόνο το Λ.Σ. μπορεί να απευθυνθεί στις συσκευές! ειδικές εντολές I/O παρόμοιες με load/store αλλά σε ειδικές διευθύσεις Ι/Ο! ή αριθμό συσκευής επιτρέπονται μόνο σε κατάσταση συστήματος 13
Επικοινωνία με τον επεξεργαστή! Το σύστημα διασύνδεσης (interconnect) κατευθύνει τις προσπελάσεις σε συσκευές στον αντίστοιχο ελεγκτή (device controller) είτε είναι memory mapped είτε ειδικές εντολές! Ο ελεγκτής ερμηνεύει την προσπέλαση και κατευθύνει τη συσκευή ανάλογα π.χ. τα δεδομένα μιας εγγραφής αποκωδικοποιούνται και ερμηνεύονται ως εντολή! Οι συσκευές είναι αργές δεν μπορούν να δεχθούν εντολές με το ρυθμό του επεξεργαστή δεν μπορούν να δώσουν δεδομένα με το ρυθμό του επεξεργαστή 14
Polling! Ελεγχος «κατάστασης» της συσκευής πρίν την επίδοση εντολής σε αυτή! Δύο καταχωρητές διευθύνσεις της συσκευής Καταχωρητής κατάστασης (Status) κάποιο bit δείχνει αν η συσκευή είναι έτοιμη (ready) να δεχθεί εντολές Καταχωρητής εντολής/δεδομένων εδώ γράφει ο επεξεργαστής τα δεδομένα/εντολή προς τη συσκευή! Επανάληψη ανάγνωσης του καταχωρητή κατάστασης μέχρι το ready bit να είναι 1! Εγγραφή στον καταχωρητή εντολής/δεδομένων 15
Παράδειγμα! Mars tool: keyboard, display MMIO simulator! 2 ζεύγη καταχωρητών για είσοδο έξοδο control/status, data 16
Κώδικας assembly li $t0, 0xffff0000 rd_poll: lw $v0, 0($t0) andi $v0, $v0, 0x01 beq $v0, $zero, rd_poll # end of loop lw $a0, 4($t0) li $t0, 0xffff0008 wr_poll: lw $v0, 0($t0) andi $v0, $v0, 0x01 beq $v0, $zero, wr_poll # end of loop sw $a0, 4($t0) 17
Polling! Χρήσιμο για ενσωμματωμένα συστήματα «πραγματικού χρόνου» (real pme embedded systems) χρόνος εισόδου- εξόδου προβλέψιμος! Μεγάλη δαπάνη χρόνου σε αρκετές περιπτώσεις! Παράδειγμα: Υπολογιστής 1Ghz (1ns περίοδος) 400 κύκλοι για polling Ποντίκι 30 φορές το δευτερόλεπτο Ποσοστό χρόνου υπολογιστή για polling? 30 x 400 = 12000 εντολές / δευτερόλεπτο 12000 / 109 = 0.0012% 18
Polling για δίσκο!!!! Ιδιος επεξεργαστής, χρόνος για poll Ανάγνωση 512Β κάθε φορά Ταχύτητα μεταφοράς: 256ΜΒ/s Δεν θέλουμε να χάσουμε δεδομένα: 256MB/s / 512B/poll = 500K polls / s 500K*400 / 109 = 20%! Υπερβολικά πολύς χρόνος για να σπαταληθεί! 19
Interrupt- driven I/O! Αντί για περιοδική εξέταση του ready bit, η συσκευή διακόπτει τον επεξεργαστή! Μειωνεκτήματα: χρόνος διακοπής: αλλαγή κατάστασης επεξεργαστή, αποθήκευση κατάστασης διεργασίας, λιγότερο προβλέψιμος χρόνος απόκρισης:! οι διακοπές μπορεί να έχουν απαγορευθεί για κάποιο χρόνο! υψηλότερης προτεραιότητας διακοπές 20
Μεταφορά δεδομένων! Με polling ή interrupt- driven I/O μπορούν να δοθούν εντολές σε μία συσκευή! Με τον ίδιο μηχανισμό μεταφέρονται και δεδομένα όπως είδαμε στο παράδειγμα του Mars! Για μεγάλο όγκο δεδομένων, ο χρόνος μεταφοράς είναι μεγάλος ακόμη και αγνοώντας το χρόνο διακοπής/polling πολλά συνεχόμενα load ή store! χωρίς cache, και με καθυστέρηση > της κύριας μνήμης! Μηχανισμός μεταφοράς δεδομένων από- προς μνήμη, χωρίς την παρέμβαση του επεξεργαστή Direct Memory Access DMA 21
DMA! Ειδικός ελεγκτής (επιπλέον υλικό) παρόμοια με τον coproc 0 του MIPS λειτουργεί ως master: κατευθύνει τις συναλλαγές έχει πρόσβαση στη κύρια μνήμη! μέχρι τώρα μόνο ο επεξεργαστής είχε! Βήματα: επεξεργαστής θεσπίζει (set up) πληροφορίες μεταφοράς γράφοντας σε κατχωρητές του ελεγκτή DMA ο ελεγκτής πραγματοποιεί τις μεταφορές δεδομένων, μία προς μία στο τέλος διακόπτει τον επεξεργαστή για να ενημερώσει ότι η μεταφορά ολοκληρώθηκε! ή συνέβει κάποιο σφάλμα 22
Πληροφορίες DMA! Πληροφορίες που παρέχει ο επεξεργαστής: Η συσκευή με την οποία θα γίνει η μεταφορά! κάποιας μορφής διεύθυνση Κατεύθυνση μεταφοράς! ανάγνωση/εγγραφή Αρχική διεύθυνση στη μνήμη Αριθμος bytes προς μεταφορά! Επικοινωνία ελεγκτή DMA με συσκευή αντί για polling, blocking read/write η συσκευή αποκρίνεται στην προσπέλαση όταν είναι έτοιμη ειδικά σήματα για «τέλος δεδομένων» ή «σφάλμα»! Πολλαπλά «κανάλια DMA» ικανότητα για ταυτόχρονες μεταφορές προς πολλές συσκευές 23
Κύρια μνήμη και DMA! Επεξεργαστής και ελεγκτής DMA συναγωνίζονται για πρόσβαση στη κύρια μνήμη! cycle stealing: ο ελεγκτής έχει μεγαλύτερη προτεραιότητα και κλέβει προσπελάσεις μνήμης από τον επεξεργαστή κρυφή μνήμη εξυπηρετεί τις περισσότερες προσπελάσεις του επεξεργαστή συσκευές έχουν πιο «άκαμπτες προθεσμίες» δεν συμβαίνει συχνά! block/burst mode: αποκλειστική πρόσβαση στη μνήμη για έναν αριθμό συνεχόμενων κύκλων 24
Πρόβλημα συνοχής μνήμης! Αγγλικός όρος: memory coherence! Ο ελεγκτής DMA διαβάζει/γράφει απευθείας στη κύρια μνήμη! Ο επεξεργαστής μέσω της κρυφής μνήμης! Προβλήματα: εγγραφή (από ελεγκτή DMA) στη κύρια μνήμη τιμών που έχουν προηγουμένως αντιγραφεί στην κρυφή! ο επεξεργαστής διαβάζει τα παλιά δεδομένα (stale) write- back κρυφή μνήμη: ανάγνωση από ελεγκτή DMA παλιών δεδομένων από κύρια μνήμη! Λύσεις: προσπελάσεις DMA μέσω κρυφής μνήμης 25
Λύσεις προβλήματος συνοχής! Προσπελάσεις DMA μέσω κρυφής μνήμης καθυστέρηση επεξεργαστή δεν εφαρμόζεται στην πράξη! Cache flushing: άδειασμα γραμμών κρυφής μνήμης αν χρησιμοποιούνται για Ι/Ο από Λ.Σ. με βοήθεια από υλικό! Επιλεκτική ακύρωση/άδειασμα γραμμών παρακολούθηση προσπελάσεων κύριας μνήμης από την κρυφή εγγραφή στη κύρια γραμμής που βρίσκεται στην $, ακύρωση της γραμμής ανάγνωση στη κύρια γραμμής που βρίσκεται στην $, η $ παρακάμπτει την κύρια και δίνει τα (τελευταία) δεδομένα 26
Εικονική μνήμη και DMA! DMA χρησιμοποιεί φυσικές διευθύνσεις μνήμης! Μεταφορές από DMA που ξεπερνούν το όριο μιας σελίδας μνήμης; τα δεδομένα είναι σε συνεχόμενες εικονικές σελίδες μπορεί να αντιστοιχούν σε διαφορετικές φυσικές σελίδες! Λύσεις μεταφορές μόνο μέσα σε όρια σελίδων! μεγάλες μεταφορές σπάνε σε κομμάτια εικονικές διευθύνσεις για DMA! με ένα πολύ μικρό «TLB» μέσα στον ελεγκτή 27
Προγραμματιστική όψη Ι/Ο! Βασισμένο σε δίαυλο (bus) μοιραζόμενο μέσο μετάδοσης μια ομάδα παράλληλα καλώδια συνδέονται σε πολλές συσκευές! Η αληθινή όψη σε παλιούς υπολογιστές 28
Χαρακτηριστικά διάυλου! Πλεονεκτήματα: «Ευκολία» (versaplity): απλός, ενιαίος τρόπος για όλες τις συσκευές Οικονομία: τα καλώδια μοιράζονται από πολλές συσκευές! Μειονεκτήματα: θέτει άνω όριο στο μέγιστο ρυθμό μετάδοσης τεράστιες διαφορές στις ταχύτητες μετάδοσης των συσκευών! ειδικά της κύριας μνήμης 29
Ιεραρχία «διαύλων»! Αργές συσκευές συνδέονται χαμηλότερα στην ιεραρχία! Γέφυρες (bridge): μεταφέρουν εντολές/δεδομένα μεταξύ επιπέδων! Στηρίζεται σε σύγχρονους, παράλληλους διαύλους (synchronous, parallel bus) 30
Προβλήματα παράλληλων συνδέσεων! Τα σήματα στέλνονται ταυτόχρονα! Τα καλώδια έχουν ελαφρώς διαφορετικά χαρακτηριστικά μήκος, επίπεδο στην πλακέτα, «θόρυβο»,...! Στον προορισμό φτάνουν με διαφορετικές καθυστερήσεις pming skew! Σε ένα πολύ γρήγορο σύστημα δύσκολα ξεχωρίζει το κάθε «κύμα» ταυτόχρονων σημάτων Οριο: μερκές 100ς MT/s 31
Σειριακή μετάδοση! Αποστολή ενός bit κάθε φορά συνήθως σε 2 καλώδια: διαφορικό ζεύγος πιο ανθεκτικό σε «θόρυβο»! Επιτυγχάνονται πολύ μεγάλοι ρυθμοί μετάδοσης GT/s, Giga (109) transfers / second! Παράλληλα ξεχωριστά lanes για επιπλέον ταχύτητα το PCI express (PCIe) ορίζει μέχρι 32 lanes (x32)! πρακτικά οι μεγαλύτερες κάρτες είναι x16 32
Μοντέρνα συστήματα I/O! Σε προσωπικούς υπολογιστές και servers χρησιμοποιείται η διασύνδεση PCI express Κανονικό δίκτυο Σύνδεσμοι point- to- point! Σήμερα: PCIe v3 7.877 Gbit/s κάθε lane PCIe 4, αναμένεται 2016, 2x 33
Υποσύστημα Ι/Ο x86! Το North bridge πλέον ενσωματωμμένο στο Ο.Κ. του επεξεργαστή 34
Επόμενο μάθημα Είσοδος/έξοδος μέρος 2: δίσκος, flash, Αξιοπιστία, RAID 35
Τέλος Ενότητας
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Σημειώματα
Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Έκδοση 1.0 διαθέσιμη εδώ. http://ecourse.uoi.gr/course/view.php?id=1307.
Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου. «Αρχιτεκτονική Υπολογιστών. Υποσύστημα εισόδου εξόδου». Έκδοση: 1.0. Ιωάννινα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1307.
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-sa/4.0/.