Κεφάλαιο 5 | Ενότητα 7 | Ερωτήσεις επισκόπησης | Επόμενο | Προηγούμενο | Λεξικό όρων

  Δίνοντας ο Επεξεργαστής Εντολές στις Συσκευές I/O

Για να δώσει μία εντολή σε μία συσκευή I/O, ο επεξεργαστής πρέπει να μπορεί να επικοινωνεί με τη συσκευή μέσω της κατάλληλης διεύθυνσης και να παρέχει μία ή περισσότερες λέξεις εντολών.

Δύο μέθοδοι χρησιμοποιούνται για να δεχτεί μια συσκευή εντολές:

  1. I/O απεικονισμένο στη μνήμη (memory-mapped I/O), και
  2. ειδικές εντολές I/O.

Ι/Ο απεικονισμένο στη μνήμη

Στο I/O απεικονισμένο στη μνήμη, τμήματα του χώρου διευθύνσεων της μνήμης εκχωρούνται σε συσκευές I/O. Εντολές ανάγνωσης και εγγραφής σε αυτές τις διευθύνσεις ερμηνεύονται ως εντολές στη συσκευή I/O.

Για παράδειγμα, μία λειτουργία εγγραφής μπορεί να χρησιμοποιηθεί, για να στείλει δεδομένα σε μία συσκευή I/O, όπου τα δεδομένα θα ερμηνευθούν ως μία εντολή. Οταν ο επεξεργαστής τοποθετήσει τη διεύθυνση και τα δεδομένα στην αρτηρία μνήμης, το σύστημα μνήμης αγνοεί τη λειτουργία, επειδή η διεύθυνση δηλώνει ένα τμήμα του χώρου διευθύνσεων που χρησιμοποιείται για I/O. Ο ελεγκτής της συσκευής όμως, βλέπει τη λειτουργία, καταγράφει τα δεδομένα και τα μεταδίδει στη συσκευή ως μία εντολή.
Ετσι, αν INBUF είναι η ενδιάμεση μνήμη αποθήκευσης εισόδου (input buffer) που σχετίζεται με το πληκτρολόγιο, η εντολή του 68000: "MOVE.B    INBUF,   MEM", διαβάζει ένα byte από το INBUF και το αποθηκεύει στη μνήμη στη διεύθυνση MEM.
 Τέλος παραδείγματος

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

Πλεονέκτημα της μεθόδου:H χρήση του Ι/Ο απεικονισμένου στη μνήμη προσφέρει σημαντική ευελιξία στο χειρισμό των λειτουργιών εισόδου/εξόδου, κι αυτό επειδή οι εντολές μηχανής και οι τρόποι διευθυνσιοδότησης που μπορούν να χρησιμοποιηθούν για τους τελεσταίους μνήμης μπορούν επίσης να αναφερθούν και σε μια συσκευή Ι/Ο. Είναι σύνηθες να εκχωρούνται γειτονικές διευθύνσεις μνήμης για να εξυπηρετήσουν τις συσκευές Ι/Ο. Ο PDP-11 και ο 68000 χρησιμοποιούν τη μέθοδο του Ι/Ο απεικονισμένου στη μνήμη για να επικοινωνήσουν με τις συσκευές εισόδου/εξόδου.

Ειδικές εντολές I/O

Η εναλλακτική λύση στο I/O απεικονισμένο στη μνήμη είναι η χρήση ειδικευμένων εντολών I/O του επεξεργαστή. Αυτές οι εντολές I/O μπορούν να προσδιορίσουν τόσο την ταυτότητα της συσκευής όσο και τη λέξη εντολής (ή τη θέση της λέξης εντολής στη μνήμη). Ο επεξεργαστής μεταδίδει τη διεύθυνση της συσκευής μέσω ενός συνόλου καλωδίων που κανονικά περιλαμβάνονται ως μέρη της αρτηρίας I/O. Η εντολή μπορεί να μεταδοθεί μέσω των γραμμών δεδομένων αρτηρίας. Παραδείγματα υπολογιστών που χρησιμοποιούν ειδικές εντολές I/O είναι ο Intel 80x86 και ο IBM 370.

Για παράδειγμα, μια εντολή επεξεργαστή όπως η: "ΟUT data, device", μπορεί να χρησιμοποιηθεί για να μεταφερθούν τα δεδομένα που προσδιορίζονται από τον πρώτο τελεσταίο στη συσκευή που προσδιορίζεται από το δεύτερο τελεσταίο. Η εκτέλεση αυτής της εντολής έχει ως αποτέλεσμα ο επεξεργαστής να εκκινήσει μια λειτουργία εγγραφής μέσω της αρτηρίας Ι/Ο, και όχι της αρτηρίας επεξεργαστή-μνήμης. Παρόμοια, μια λειτουργία εισόδου μπορεί να πραγματοποιηθεί με μια εντολή IN. Τέλος παραδείγματος

Απαγορεύοντας στις εντολές I/O να εκτελούνται όταν ο επεξεργαστής δε βρίσκεται σε κατάσταση πυρήνα ή επόπτη, τα προγράμματα χρήστη δεν είναι ικανά να έχουν απευθείας πρόσβαση στις συσκευές.

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 3

Να συγκρίνετε τις μεθόδους με τις οποίες ο επεξεργαστής μπορεί να δώσει εντολές στις συσκευές Ι/Ο ως προς την ευκολία της υλοποίησης. Να αιτιολογήσετε την απάντησή σας.

 

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 3



Πολλαπλές λειτουργίες Ι/Ο για μια αίτηση

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

Για παράδειγμα, ο εκτυπωτής γραμμής DEC LP11 έχει δύο καταχωρητές συσκευής I/O – έναν για τις πληροφορίες κατάστασης και έναν για τα δεδομένα προς εκτύπωση. Ο καταχωρητής Κατάστασης (Status register) περιέχει ένα bit διεκπεραίωσης (done bit), το οποίο τίθεται από τον εκτυπωτή όταν έχει εκτυπώσει ένα χαρακτήρα και ένα bit λάθους (error bit), που δηλώνει πως ο εκτυπωτής μπλόκαρε ή ξέμεινε από χαρτί. Κάθε byte των δεδομένων προς εκτύπωση τοποθετείται στον καταχωρητή Δεδομένων (Data register). Ο επεξεργαστής πρέπει κατόπιν να περιμένει, μέχρι ο εκτυπωτής να θέσει το bit διεκπεραίωσης, προτού να μπορέσει να τοποθετήσει έναν άλλο χαρακτήρα (δηλαδή ένα byte) στην ενδιάμεση μνήμη (buffer). Ο επεξεργαστής πρέπει επίσης να ελέγχει το bit λάθους για να διαπιστώσει αν προέκυψε κάποιο πρόβλημα. Κάθε μία από αυτές τις λειτουργίες απαιτεί μία ξεχωριστή πρόσβαση στη συσκευή I/O. Τέλος παραδείγματος