Παράλειψη περιήγησης

Αρχές λειτουργίας και αρχιτεκτονική μικροΕπεξεργαστών

Μικροϋπολογιστής vs Λογικές Πύλες

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

Αρχιτεκτονική μικροεπεξεργαστή

Ένας μικροεπεξεργαστής αποτελείται από τα ακόλουθα τμήματα:

  • την αριθμητική και λογική μονάδα (Arithmetic and Logic Unit, ALU)
  • τη μονάδα ελέγχου (control unit, CU)
  • τους καταχωρητές (registers).

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

  •  δυαδική πρόσθεση και αφαίρεση
  • λογικό ΚΑΙ, Η, αποκλειστικό Η (AND, OR, XOR)
  • συμπλήρωμα (ως προς 1 και ως προς 2)
  • ολίσθηση και περιστροφή (δεξιά ή αριστερά)
  • πολλαπλασιασμός και διαίρεση (δεν περιλαμβάνονται σε όλους τους μικροεπεξεργαστές

Το αποτέλεσμα της εκτέλεσης της πράξης στην ALU επηρεάζει επίσης μια σειρά από flip-flops που ονομάζονται σημαίες (flags). Για παράδειγμα, μια σημαία μπορεί να δείχνει αν προέκυψε κρατούμενο από το πιο σημαντικό ψηφίο μετά την εκτέλεση μιας πρόσθεσης, ενώ μια άλλη σημαία μπορεί να δείχνει αν το αποτέλεσμα μιας πράξης είναι 0. Το σύνολο των σημαιών αποτελεί τον καταχωρητή κατάστασης (status register) του μικροεπεξεργαστή, στον οποίο θα αναφερθούμε εκτενέστερα στη συνέχεια.

Η μονάδα ελέγχου ενός μικροεπεξεργαστή ελέγχει και συγχρονίζει τη μεταφορά και επεξεργασία των δεδομένων και είναι το κύριο υποσύστημα του ίδιου του μικροεπεξεργαστή. Όλες οι ενέργειες σε ένα μικροεπεξεργαστή πραγματοποιούνται με την επίβλεψη της μονάδας ελέγχου. Η μονάδα ελέγχου χρησιμοποιεί ως είσοδο ένα εξωτερικό ρολόι (clk) και παράγει σήματα χρονισμού και ελέγχου που ρυθμίζουν τις μεταφορές δεδομένων και
τις πράξεις που περιλαμβάνονται σε κάθε εντολή.

    Άσκηση

    Επιλέξτε στον παρακάτω πίνακα τις κατάλληλες τιμές για τα σήματα RD/WR' και IO/M'.

    RD/WR' IO/M' Λειτουργία
    Εγγραφή σε μνήμη (RAM)
    Ανάγνωση από συσκευή εισόδου
    Εγγραφή σε συσκευή εξόδου
    Ανάγνωση από μνήμη (RAM ή ROM)

    Ενεργοποίηση JavaScript

    Άσκηση

    Από ποια τμήματα αποτελείται ένας μ/Ε και ποιος ο ρόλος τους;

    Άσκηση

    Επιλέξτε ως ΣΩΣΤΕΣ όσες από τις παρακάτω πράξεις εκτελούνται από την αριθμητική και λογική μονάδα (ALU):

    Ερώτηση 1

    Λογικές πράξεις (AND, OR, NOT, XOR, κτλ)

    Ερώτηση 2

    Αποκωδικοποίηση εντολών

    Ερώτηση 3

    Συμπλήρωμα ως προς 1 και ως προς 2

    Ερώτηση 4

    Δυαδική πρόσθεση και αφαίρεση

    Ερώτηση 5

    Ολίσθηση και περιστροφή

    Ερώτηση 6

    Απαρίθμηση εντολών προγράμματος

    Άσκηση

    Ερώτηση 1

    Η μονάδα ελέγχου ελέγχει και συγχρονίζει την μεταφορά και επεξεργασία των δεδομένων και είναι η καρδιά του μικροεπεξεργαστή.

    Ερώτηση 2

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

    Ερώτηση 3

    Η μονάδα ελέγχου δέχεται στην είσοδό της παλμούς από ένα εξωτερικό ρολόι (clock) και με τη βοήθειά του παράγει τα σήματα χρονισμού και ελέγχου για την εκτέλεση κάθε εντολής.

    Καταχωρητές

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

    Η εκκίνηση του μικροεπεξεργαστή γίνεται ως εξής: Όταν η είσοδος reset είναι στο ’1’, ο απαριθμητής προγράμματος παίρνει την τιμή 0000 (ή γενικότερα κάποια αρχική τιμή). Όταν το σήμα reset ξαναγυρίσει στο ’0’ η μονάδα ελέγχου μεταφέρει τα περιεχόμενα του απαριθμητή προγράμματος στον απομονωτή διευθύνσεων (address latch) παρέχοντας έτσι τη διεύθυνση της πρώτης εντολής που θα εκτελεστεί. Με αυτόν τον τρόπο (συνήθως) η εκτέλεση των προγραμμάτων σε ένα μικροϋπολογιστικό σύστημα ξεκινάει με την εντολή που βρίσκεται στη θέση μνήμης 0. Για το λόγο αυτό, οι πρώτες θέσεις μνήμης αντιστοιχούν σε διευθύνσεις της μνήμης ROM. Τα προγράμματα που περιέχονται στις θέσεις αυτές (πχ. βασικές ρουτίνες εισόδου-εξόδου δεδομένων) είναι σημαντικά για την ομαλή λειτουργία του μικροϋπολογιστικού συστήματος.

    Ο καταχωρητής εντολών είναι ένας καταχωρητής στον οποίο μεταφέρεται η εντολή που διαβάστηκε από τη μνήμη. Στη συνέχεια, η εντολή αποκωδικοποιείται μέσω του αποκωδικοποιητή εντολών προκειμένου να εκτελεστεί. Οι εντολές ενός μικροεπεξεργαστή μπορεί να έχουν μήκος 1 ή περισσότερες λέξεις μνήμης. Η πρώτη λέξη περιέχει τον κωδικό λειτουργίας (operation code ή opcode), με άλλα λόγια το είδος της εντολής που ανακαλείται (αν πρόκειται δηλαδή για εντολή εκτέλεσης αριθμητικής πράξης, μεταφοράς δεδομένων, και ποια). Με την ανάγνωση του κωδικού της εντολής ο μικροεπεξεργαστής είναι σε θέση να γνωρίζει αν η εντολή καταλαμβάνει περισσότερες θέσεις μνήμης και ποιες, καθώς και ποιες λειτουργίες θα εκτελέσει στη συνέχεια, ποια σήματα θα πρέπει να ενεργοποιήσει κ.λ.π. Κατά τη διάρκεια ανάκλησης της εντολής (instruction fetch), η πρώτη λέξη μνήμης μεταφέρεται από τη μνήμη μέσω του εξωτερικού διαδρόμου δεδομένων (data bus) στον καταχωρητή εντολών (instruction register). Ο απαριθμητής προγράμματος αυξάνεται αυτόματα κατά 1, οπότε περιέχει τη διεύθυνση της επόμενης εντολής (αν η τρέχουσα εντολή καταλαμβάνει μια μόνο θέση μνήμης) ή στην επόμενη θέση μνήμης αυτής της εντολής αν η εντολή περιέχει 2 ή περισσότερα bytes.

    Στην περίπτωση που μια εντολή καταλαμβάνει πολλές θέσεις μνήμης (multiword instruction), η μονάδα ελέγχου προχωρά στην ανάγνωση των επόμενων θέσεων μνήμης όπως αναφέραμε. Για το σκοπό αυτό, η μονάδα ελέγχου
    χρησιμοποιεί τα σήματα του αποκωδικοποιητή εντολών και παράγει τα κατάλληλα σήματα χρονισμού (timing) καθώς και ελέγχου εξωτερικών συσκευών. Όταν φορτωθούν όλες οι λέξεις στο μικροεπεξεργαστή, εκτελείται η εντολή. Η εκτέλεση της εντολής, εκτός από τις λειτουργίες που γίνονται εσωτερικά στο μικροεπεξεργαστή, μπορεί να απαιτήσει μεταφορά δεδομένων μεταξύ του μικροεπεξεργαστή και των μονάδων μνήμης και εισόδου-εξόδου.

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

    Ο καταχωρητής αυτός δίνει πληροφορίες σχετικά με τα αποτελέσματα της τελευταίας εντολής που εκτελέστηκε και σχετίζεται, όπως αναφέραμε, με την ALU. Ο καταχωρητής αυτός περιλαμβάνει κάποιες σημαίες συνθήκης, οι πιο γνωστές από τις οποίες είναι οι σημαίες μηδενισμού (zero), προσήμου (sign), ισοτιμίας (parity) και κρατουμένου (carry). Οι σημαίες αυτές επηρεάζονται από την εκτέλεση των εντολών ως εξής:

    • Σημαία μηδενισμού (Ζ, zero): αν το αποτέλεσμα μιας εντολής είναι 0, τότε Ζ=1, διαφορετικά Ζ=0.
    • Σημαία προσήμου (S, sign): αν το περισσότερο σημαντικό ψηφίο του αποτελέσματος μιας πράξης είναι ’1’ (ο αριθμός είναι αρνητικός), τότε S=1, αλλιώς S=0.
    • Σημαία ισοτιμίας (Ρ, parity): αν το αποτέλεσμα μιας πράξης έχει άρτιο αριθμό ’1’, δηλαδή άρτια ισοτιμία, τότε Ρ=1, αλλιώς Ρ=0.
    • Σημαία κρατουμένου (C, carry): αν η εντολή είχε ως αποτέλεσμα να προκύψει κρατούμενο (από πρόσθεση) ή δανεικό (από αφαίρεση) τότε C=1, αλλιώς C=0.

    Άσκηση

    Αναφέρατε ονομαστικά τους 4 καταχωρητές που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών.

    Άσκηση

    Στον καταχωρείται η διεύθυνση μνήμης στην οποία βρίσκεται η επόμενη προς εκτέλεση εντολή.

    Στον καταχωρείται η εντολή που πρόκειται να αποκωδικοποιηθεί από τον και να εκτελεστεί.

    Στον καταχωρείται η διεύθυνση της κορυφής της στοίβας. 

    Στον υπάρχουν οι σημαίες συνθήκης (flags).

    Ενεργοποίηση JavaScript

    Άσκηση

    Ποιες είναι οι βασικές σημαίες συνθήκης του καταχωρητή κατάστασης και ποιος ο ρόλος τους;


    (c) Αμπατζόγλου Γιάννης, MSc  Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ84

    Αδειοδοτημένο υπό τους όρους Creative Commons Αναφορά Δημιουργού 4.0

    Δημιουργήθηκε με το eXeLearning (Νέο παράθυρο)