Αστέρια ΑνενεργάΑστέρια ΑνενεργάΑστέρια ΑνενεργάΑστέρια ΑνενεργάΑστέρια Ανενεργά
 

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων

 Λειτουργία τακτικής σάρωσης (Polling)

  • Λειτουργία Διακοπών
  • DMA (Direct Memory Access)

 

3.8.1 Επικοινωνία Συσκευών με τον επεξεργαστή

 

            Στα προηγούμενα μαθήματα περιγράφονται οι τρόποι με τους οποίους ο επεξεργαστής επικοινωνεί με την μνήμη και τις περιφερειακές του μονάδες. Στο μάθημα αυτό θα δούμε τεχνικές με τις οποίες οι περιφερειακές μονάδες ειδοποιούν τον επεξεργαστή ότι χρειάζονται να επικοινωνήσουν μαζί του.

 

            Ας υποθέσουμε ότι έχουμε ένα πληκτρολόγιο συνδεδεμένο σε ένα υπολογιστικό σύστημα. Το πληκτρολόγιο είναι μια μονάδα εισόδου. Κάθε φορά που πατάμε ένα πλήκτρο πρέπει το πληκτρολόγιο να επικοινωνήσει με τον επεξεργαστή και να πει ποιο πλήκτρο πατήθηκε. Οι χρονικές όμως στιγμές στις οποίες εμείς πατάμε ένα πλήκτρο είναι τυχαίες. Ο επεξεργαστής δεν ξέρει πότε πρέπει να περιμένει πάτημα πλήκτρου και αν πρέπει να περιμένει. Αν ο επεξεργαστής κοιτάει συνέχεια το πληκτρολόγιο αν πατήθηκε κάποιο πλήκτρο τότε δεν θα μπορεί να εκτελεί κανένα άλλο πρόγραμμα συγχρόνως. Θα είναι διαρκώς απασχολημένος με την παρακολούθηση του πληκτρολογίου

 

            Μια απλή τεχνική που εφαρμόζεται για την λύση αυτού του προβλήματος σε απλά υπολογιστικά συστήματα είναι η τεχνική τακτικής σάρωσης (polling). Ας υποθέσουμε ότι έχουμε τέσσερις συσκευές εισόδου, συνδεδεμένες σε ένα υπολογιστικό σύστημα. (Σχήμα 3.8.1) Σύμφωνα με την τεχνική αυτή ο επεξεργαστής ελέγχει κατά τακτά χρονικά διαστήματα κάθε συσκευή εισόδου, αν έχει κάτι να «πει». Δηλαδή ελέγχει ένα σήμα κάθε μονάδας εισόδου που του «λέει» αν είναι ενεργοποιημένο. Με το σήμα αυτό η μονάδα δηλώνει ότι έχει δεδομένα που πρέπει να στείλει στον επεξεργαστή. Με αυτό τον τρόπο ο επεξεργαστής μπορεί να τρέχει ένα πρόγραμμα και σε τακτές χρονικές στιγμές διακόπτει την εκτέλεση του προγράμματος και κοιτάει μία-μία τις περιφερειακές συσκευές αν έχουν κάποιο καινούργιο δεδομένο. Όπως φαίνεται και στο σχήμα 3.8.1 ο επεξεργαστής κοιτάει πρώτα την μονάδα 1 αν έχει καινούργιο δεδομένο. Αν έχει εξυπηρετεί την μονάδα 1, ενώ στην αντίθετη περίπτωση κοιτάει την μονάδα 2. Η διαδικασία αυτή συνεχίζεται ώσπου να ελεγχούν όλες οι τέσσερις μονάδες. Συνήθως οι μονάδες εισόδου είναι αργές συσκευές. Ας πάρουμε για παράδειγμα το πλητρολόγιο και ας υποθέσουμε ότι μπορούμε να πλητρολογούμε 10 πλήκτρα το δευτερόλεπτο. Με αυτό το ρυθμό το πληκτρολόγιο θα ενεργοποιεί το σήμα που δείχνει ότι έχει νέο δεδομένο κάθε 100 msec. Σήμερα ένας απλός επεξεργαστής με συχνότητα λειτουργίας στα 20MHz μπορεί να εκτελέσει περίπου 100.000 εντολές μέσα στο χρονικό διάστημα των 100 msec. Από αυτό το παράδειγμα καταλαβαίνουμε ότι ο επεξεργαστής μπορεί να εκτελεί ένα πρόγραμμα και ανά τακτά χρονικά διαστήματα να ελέγχει τις μονάδες εισόδου, χωρίς κανένα πρόβλημα. Έτσι αν ελέγχει κάθε 100 msec έχει διαθέσιμες 100.000 εντολές. Ένας μικρός αριθμός από αυτές (~10 εντολές) αρκούν για τον έλεγχο. Οι υπόλοιπες μπορούν να αξιοποιηθούν από το πρόγραμμα που εκτελεί.

 

Σχήμα 3.8.1 Ελέγχος μονάδων με Polling

 

            Το πλεονέκτημα αυτής της τεχνικής είναι ότι η σχεδίαση του υπολογιστικού συστήματος είναι αρκετά απλή και το πρόγραμμα που χρειάζεται ο επεξεργαστής να τρέχει είναι εύκολο στην σχεδίαση και στην υλοποίησή του.

 

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

 

3.8.2 Διακοπές

 

            Μια άλλη τεχνική που χρησιμοποιείται ευρέως την επικοινωνία των μονάδων εισόδου με τον επεξεργαστή είναι αυτή των διακοπών (interrupt).

 

            Σύμφωνα με την τεχνική αυτή ο επεξεργαστής πρέπει να έχει ένα σήμα εισόδου με το οποίο τον ειδοποιούμε ότι τουλάχιστον μία εξωτερική μονάδα θέλει να επικοινωνήσει μαζί του. Ο επεξεργαστής κάθε φορά που τελειώνει την εκτέλεση μιας εντολής κοιτάει το σήμα αυτό. Αυτό δεν γίνεται μέσω προγράμματος αλλά είναι ενσωματωμένο στο υλικό του επεξεργαστή και γίνεται αυτόματα με την εκτέλεση κάθε εντολής. Έτσι ο ρυθμός με τον οποίο ο επεξεργαστής καταλαβαίνει πότε μία εξωτερική μονάδα έχει καινούργιο δεδομένο είναι πολύ ψηλός (στο τέλος κάθε εντολής), με αποτέλεσμα να μπορεί να εξυπηρετήσει και να ανταποκριθεί σε αιτήσεις (διακοπές) γρήγορων συσκευών.

 

Όταν ο επεξεργαστής αναγνωρίσει ότι πρέπει να εξυπηρετήσει μια μονάδα εισόδου, σταματάει προσωρινά την εκτέλεση του προγράμματος που εκτελεί και αρχίζει την εξυπηρέτηση της μονάδας αυτής. Όταν τελειώσει την εξυπηρέτησει της μονάδας επιστρέφει στο πρόγραμμα που εκτελούσε και το συνεχίζει από το σημείο που είχε σταματήσει. Το σήμα διακοπής που ελέγχει ο επεξεργαστής ονομάζεται INTR (interrupt request – αίτηση διακοπής). Το σήμα αυτό το στέλνει η συσκευή που ζητάει εξυπηρέτησει. Όταν ο επεξεργαστής είναι έτοιμος να εξυπηρετήσει την συσκευή, που έχει ζήτησει εξυπηρέτηση, ενεργοποιεί το σήμα αναγνώρισης διακοπής ΙΝΤΑ (interrupt ack). Η συσκευή περιμένει από τον επεξεργαστή το σήμα INTA και μόλις αυτό ενεργοποιηθεί συνδέονται ο επεξεργαστής και η συσκευή για μεταφορά δεδομένων.

 

Σχήμα 3.8.2 Σήματα διακοπών

 

Βέβαια, στην πραγματικότητα υπάρχουν περισσότερες από μια περιφερειακές συσκευές σε ένα υπολογιστικό σύστημα. Κάθε μία από αυτές στέλνει το δικό της σήμα διακοπής σε ένα κύκλωμα που ονομάζεται προγραμματιζόμενος ελεγκτής διακοπών (PIC). Το κύκλωμα αυτό είναι υπεύθυνο για την παραγωγή του σήματος διακοπής που θα συνδεθεί στον επεξεργαστή. Το σήμα αυτό ενεργοποιείται, όταν μία τουλάχιστον μονάδα ζητάει να επικοινωνήσει με τον επεξεργαστή. Για κάθε περιφερειακή μονάδα ο επεξεργαστής πρέπει να εκτελέσει διαφορετικές λειτουργίες. Έτσι ο επεξεργαστής πρέπει να ξέρει ποια μονάδα ζήτησε εξυπηρέτηση. Για αυτό το λόγο ο προγραμματιζόμενος ελεγκτής διακοπών εκτός από το σήμα διακοπής, παράγει και έναν αριθμό (συνήθως 255) με το οποίο δίνει στον επεξεργαστή τον αριθμό της μονάδας εισόδου που προκαλεί τη διακοπή και πρέπει να εξυπηρετήσει.

 

Σχήμα 3.8.3 Σύνδεση πολλών μονάδων μέσω PIC

 

Στο σχήμα 3.8.3 φαίνεται η σύνδεση τεσσάρων συσκευών με τον επεξεργαστή μέσω ενός προγραμματιζόμενου ελεγκτή διακοπών. Κάθε συσκευή διαθέτει τα δύο σήματα (IΝΤR - ΙΝΤΑ) τα οποία συνδέονται στον ελεγκτή διακοπών. To πρώτο (INTR) είναι έξοδος και με αυτό ζητάει εξυπηρέτηση. Το δεύτερο (INTA) είναι είσοδος και αποτελεί απάντηση στο σήμα INTR που δηλώνει ότι έχει ξεκινήσει η διαδικασία της εξυπηρέτησης.

 

            Το πλεονέκτημα αυτής της τεχνικής είναι ότι μπορεί να εξυπηρετήσει πολύ γρήγορες περιφερειακές μονάδες. Επειδή ο επεξεργαστής ελέγχει με πολύ γρήγορο ρυθμό (σε κάθε εντολή) το σήμα διακοπής η συσκευή, που θέλει να επικοινωνήσει με τον επεξεργαστή, δεν περιμένει σχεδόν καθόλου και εξυπηρετείται αμέσως. Ακομά ο επεξεργαστής δεν χάνει χρόνο να ελέγχει αν μία μονάδα θέλει να επικοινωνήσει μαζί του όπως στην μέθοδο polling. Ο έλεγχος που εκτελεί ο επεξεργαστής για το σήμα διακοπής γίνεται από το υλικό και δεν αφαιρεί πολύτιμη υπολογιστική ισχύ του επεξεργαστή.

 

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

 

3.8.3 Άμεση Προσπέλαση Μνήμης

 

            Η τεχνική άμεσης προσπέλασης της μνήμης (DMA - (Direct Memory Access) είναι ένας τρόπος μαζικής μεταφοράς δεδομένων μεταξύ των περιφερειακών μονάδων και της μνήμης χωρίς την μεσολάβηση του επεξεργαστή.

 

            Η τεχνική αυτή συνήθως χρησιμοποιείται με την μεταφορά δεδομένων από τα αποθηκευτικά μέσα προς την μνήμη και αντίστροφα παρακάμπτοντας τον επεξεργαστή. Για τη υλοποίηση της τεχνικής αυτή χρειάζεται ένας ελεγκτής DMA. Ο ελεγκτής αυτός είναι ένα ολοκληρωμένο κύκλωμα που συνδέεται πάνω στον διάδρομο του υπολογιστικού συστήματος. Όταν έχουμε άμεση προσπέλαση μνήμης ο ελεγκτής DMA αναλαμβάνει αντί της ΚΜΕ τον έλεγχο του διαδρόμου.

 

            Σύμφωνα την τεχνική αυτή, όταν θέλουμε να μεταφέρουμε μεγάλο πλήθος δεδομένων από την μνήμη προς μονάδες εισόδου-εξόδου και αντίστροφα, ο επεξεργαστής δίνει τις κατάλληλες πληροφορίες στον DMA ελεγκτή. Με αυτές την πληροφορίες ο DMA ελεγκτής μπορεί να εκτελέσει την μεταφορά των δεδομένων χωρίς την παρέμβαση του επεξεργαστή. Το χρονικό διάστημα, που διαρκεί αυτή η μεταφορά, ο επεξεργαστής μπορεί να εκτελεί άλλες λειτουργίες αυξάνοντας έτσι την απόδοση του υπολογιστικού συστήματος.

 

Σχήμα 3.8.4 ελεγκτής DMA

 

            Ο ελεγκτής DMA έχει τουλάχιστον τέσσερις καταχωρητές. Σε αυτούς τους καταχωρητές ο επεξεργαστής δίνει τις πληροφορίες για την μεταφορά των δεδομένων που θέλει να κάνει. Στον ένα καταχωρητή δίνεται η αρχική διεύθυνση της μνήμης στην οποία θα αποθηκευτούν τα δεδομένα ή θα διαβαστούν από αυτή. Σε έναν άλλο καταχωρητή δίνεται το πλήθος των bytes που πρέπει να μεταφερθούν. Στον τρίτο καταχωρητή το όνομα της μονάδας εισόδου-εξόδου που θα λάβει μέρος στη μεταφορά. Τέλος, σε ένα τέταρτο καταχωρητή δίνεται η κατεύθυνση των δεδομένων. Δηλαδή αν θα μεταφερθούν δεδομένα από την μνήμη προς τη περιφερειακή μονάδα ή αντίστροφα.

 

            Κατά την διάρκεια της λειτουργίας του ελεγκτή DMA ο έλεγχος του διαδρόμου του υπολογιστικού συστήματος μεταφέρεται από τον επεξεργαστή στον ελεγκτή DMA. Όταν τελειώσει η μεταφορά όλων των δεδομένων, ο ελεγκτής DMA δίνει με την σειρά του τον έλεγχο του διαδρόμου του υπολογιστικού συστήματος στον επεξεργαστή. Αυτός ο τρόπος λειτουργίας εξασφαλίζει την ταχύτερη μεταφορά δεδομένων και ονομάζεται «Μεταφορά Ριπής» (Burst Mode)

 

            Ένας άλλος τρόπος λειτουργίας του DMA ελεγκτή είναι να μην παίρνει τον έλεγχο του διαδρόμου από τον επεξεργαστή. Η μεταφορά των δεδομένων τότε γίνεται μόνο στις χρονικές στιγμές όπου ο επεξεργαστής δεν χρησιμοποιεί τον διάδρομο. Ο τρόπος αυτός λειτουργίας ονομάζεται «κλέψιμο κύκλου» (Cycle Stealing) Η λειτουργία αυτή δεν εξασφαλίζει την ταχύτερη μεταφορά δεδομένων αλλά εξασφαλίζει την ταυτόχρονη λειτουργία του επεξεργαστή και μιας DMA μεταφοράς δεδομένων.

 

Το τρόπος λειτουργίας του ελεγκτή DMA, αν δηλαδή χρησιμοποιηθεί η μεταφορά ριπής ή το κλέψιμο κύκλου, εξαρτάται από την ταχύτητα της περιφερειακής μονάδας. Αν η ταχύτητα της περιφερειακής μονάδας είναι περίπου ίδια με αυτή της μνήμης, η μεταφορά ριπής είναι ο καλύτερος τρόπος. Επειδή η μεταφορά δεδομένων γίνεται με την ταχύτητα της μνήμης ο επεξεργαστής δεν μπορεί να «βρεί» χρόνο στον οποίο η μνήμη δεν δουλεύει. ΄Ετσι αν διακόψει την άμεση μεταφορά των δεδομένων θα έχουμε καθυστέρησει την εξυπηρέτηση της γρήγορης περιφερειακής μονάδας. Σε μία όμως αργή μεταφορά ο επεξεργαστή βρίσκει χρόνο, στον οποίο η μνήμη δεν δουλεύει και μπορεί να επικοινωνήσει και αυτός με την μνήμη. Έτσι για αργές περιφερειακές μονάδες καλύτερος τρόπος είναι αυτός του κλέψιμου κύκλου. Τέλος, η επιλογή του τρόπου λειτουργίας του ελεγκτή DMA καθορίζεται από το πλήθος των δεδομένων και από το πόσο σημαντική είναι η μεταφορά των συγκεκριμένων δεδομένων.

 

Τι έμαθες

 

  • Υπάρχουν δύο τεχνικές επικοινωνίας των μονάδων εισόδων- εξόδων με τον επεξεργαστή.
  • Για αργές συσκευές χρησιμοποιούμε την τεχνική Polling και για γρήγορες την τεχνική των διακοπών.
  • Με ένα ελεγκτή DMA μπορούμε να μεταφέρουμε δεδομένα από την μνήμη σε μονάδα εξόδου-εισόδου χωρίς την παρέμβαση του επεξεργαστή.
  • Υπάρχουν δύο τρόποι λειτουργίας DMA. Ο burst mode και o cycle stealing.

 

Ορολογία

 

  • Σάρωση (Polling)
  • Μεταφορά ριπής (Burst Mode)
  • Κλέψιμο κύκλου (Cycle Stealing)
  • Άμεση προσπέλαση Μνήμης (DMA)
  • Διακοπή (Interrupt)

 

Έλεγχος γνώσεων

 

  • Τι ονομάζουμε τεχνική polling;
  • Ποιά είναι τα πλεονεκτήματα και τα μειονεκτήματα της τεχνικής polling;
  • Για ποιές συσκευές είναι κατάλληλη η τεχνική των διακοπών και γιατί;
  • Μπορούν να μεταφερθούν δεδομένα στον διάδρομο ενός υπολογιστικού συστήματος χωρίς την παρέμβαση του επεξεργαστή; Αν ναι πώς;
  • Ποια είδη λειτουργίας DMA γνωρίζετε;

Προσθήκη νέου σχολίου


Κωδικός ασφαλείας
Ανανέωση