Εντολές μικροΕπεξεργαστών
Φάσεις εκτέλεσης μιας εντολής
.png)
Η διαδικασία που ακολουθείται, προκειμένου να εκτελεστεί η εντολή, περιλαμβάνει τις φάσεις: κλήση εντολής, αποκωδικοποίηση εντολής και εκτέλεση της εντολής.
Στη φάση κλήσης της εντολής μεταφέρεται ο κώδικας της επόμενης εντολής από τη μνήμη (από τη θέση που δείχνει ο μετρητής προγράμματος PC). Στην αποκωδικοποίηση (του κώδικα της εντολής), αν η εντολή περιέχει και άλλα byte δεδομένων, τότε μεταφέρεται από τη μνήμη η υπόλοιπη εντολή. Η φάση εκτέλεσης της εντολής εξαρτάται από την εντολή που πρόκειται να εκτελεστεί.
Oι πληροφορίες που αποθηκεύονται στη μνήμη μπορούν να ερμηνευθούν από το μικροεπεξεργαστή είτε ως δεδομένα είτε ως εντολές. Για να εκτελεστεί ένα πρόγραμμα από το μικροεπεξεργαστή, πρέπει οι εντολές
του προγράμματος να είναι αποθηκευμένες σε κάποιες από τις θέσεις μνήμης. Συνήθως μάλιστα, οι εντολές αποθηκεύονται σε διαδοχικές θέσεις της μνήμης σύμφωνα με τη σειρά με την οποία πρέπει να εκτελεστούν.
Άσκηση
Ποιες φάσεις ακολουθούνται μέχρι την εκτέλεση μιας εντολής;
Γλώσσα μηχανής και συμβολική γλώσσα
.png)
Κάθε εντολή παριστάνεται με μια ή περισσότερες λέξεις του υπολογιστή και χωρίζεται σε δύο τμήματα:
• τον κώδικα εντολής (opcode) που έχει μήκος κ δυαδικά ψηφία
• το τμήμα διευθύνσεως που έχει μήκος τ δυαδικά ψηφία.
.png)
Το άθροισμα κ+τ των δυαδικών ψηφίων του κώδικα και του τμήματος διεύθυνσης δίνει το μήκος της εντολής. Ο κώδικας της εντολής ορίζει τη λειτουργία που πρέπει να εκτελεστεί από το μικροεπεξεργαστή, ενώ το τμήμα διευθύνσεως περιέχει τα δεδομένα της.
Το σύνολο των εντολών τις οποίες μπορεί να εκτελέσει ένας μικροεπεξεργαστής ονομάζεται ρεπερτόριο εντολών (instruction set) του μικροεπεξεργαστή. Κάθε μια από τις εντολές αυτές αντιστοιχίζεται σε ένα δυαδικό αριθμό των κ δυαδικών ψηφίων ο οποίος θα τη συμβολίζει. Επομένως, ένας μικροεπεξεργαστής μπορεί να διαθέτει έως 2κ διαφορετικές εντολές. Για παράδειγμα, ένας μικροεπεξεργαστής ο οποίος μπορεί να εκτελέσει εντολές των 5 bit, μπορεί να αναγνωρίσει 25=32 διαφορετικές εντολές.
Οι εντολές χωρίζονται σε ομάδες, ανάλογα με την εργασία που επιτελούν. Έτσι, υπάρχουν εντολές εκτέλεσης άλματος, εντολές ολίσθησης, εντολές εισόδου-εξόδου κ.λπ. Το τμήμα διευθύνσεως της εντολής, που έχει μήκος τ είναι ένας δυαδικός αριθμός. Συνήθως, ο αριθμός αυτός παριστάνει μια διεύθυνση της μνήμης. Ανάλογα με την
εντολή όμως, μπορεί να παριστάνει ένα καταχωρητή.
.png)
Οι εντολές που μπορεί να εκτελέσει ένας μικροεπεξεργαστής είναι γραμμένες σε αριθμητική μορφή και μάλιστα στο δυαδικό σύστημα. Ένα πρόγραμμα στη γλώσσα αυτή ονομάζεται πρόγραμμα σε γλώσσα μηχανής (machine language). Όμως, η συγγραφή προγραμμάτων στη γλώσσα αυτή είναι κουραστική και απαιτεί χρόνο. Τα πράγματα θα ήταν πιο απλά αν μπορούσε κανείς να γράψει τις εντολές με τρόπο συμβολικό, έτσι ώστε να θυμίζει τη λειτουργία τους. Μια γλώσσα που αποτελείται από τέτοιες συμβολικές εντολές ονομάζεται συμβολική γλώσσα (assembly language). Για κάθε εντολή από το ρεπερτόριο εντολών του μικροεπεξεργαστή, υπάρχει και η αντίστοιχη εντολή σε συμβολική γλώσσα. Για να μπορέσει να εκτελεστεί από το μικροεπεξεργαστή ένα πρόγραμμα σε συμβολική γλώσσα, πρέπει να μεταφραστεί σε γλώσσα μηχανής. Για να πραγματοποιηθεί η μετάφραση αυτή χρησιμοποιείται ένα κατάλληλο πρόγραμμα που ονομάζεται συμβολομεταφραστής (assembler).
Άσκηση
Σε ποια τμήματα χωρίζεται μια εντολή;
Άσκηση
Άσκηση
Ανατροφοδότηση
Λάθος
είναι σε γλώσσα μηχανής
Ανατροφοδότηση
Λάθος
είναι σε συμβολική γλώσσα (ASSEBLY)
Ανατροφοδότηση
Σωστό
Κύκλος εντολής & κύκλος μηχανής
.png)
Ο μικροεπεξεργαστής κατά τη λειτουργία του ανακαλεί και εκτελεί εντολές ακολουθιακά τη μια μετά την άλλη. Η ανάκληση και εκτέλεση μιας εντολής αποτελεί ένα κύκλο εντολής. Ένας κύκλος εντολής αποτελείται από μια ή περισσότερες λειτουργίες ανάγνωσης ή εγγραφής στη μνήμη ή στη μονάδα εισόδου-εξόδου. Κάθε αναφορά σε
μονάδα εισόδου-εξόδου ή στη μνήμη απαιτεί έναν κύκλο μηχανής. Συνεπώς κάθε φορά που μια λέξη μνήμης μεταφέρεται προς το μικροεπεξεργαστή ή αντίστροφα, εκτελείται ένας κύκλος μηχανής. Οι πιο συνηθισμένοι κύκλοι που μπορούμε να συναντήσουμε σε ένα μικροεπεξεργαστή είναι οι ακόλουθοι:
• ανάκληση κώδικα (opcode fetch)
• ανάγνωση από τη μνήμη (memory read)
• εγγραφή στη μνήμη (memory write)
• ανάγνωση I/O (I/O read): είσοδος
• εγγραφή I/O (I/O write): έξοδος
• αναγνώριση διακοπής (interrupt acknowledge)
• ''άεργος'' κύκλος (bus idle)
Ένας κύκλος μηχανής ενεργοποιείται από τη μονάδα ελέγχου του μικροεπεξεργαστή μόλις η μονάδα ελέγχου λάβει τον κώδικα της εντολής. Ο παρακάτω πίνακας δείχνει τις τιμές των σημάτων ΙΟ/Μ’, RD/WR’, για κάθε ένα από τους κύκλους αυτούς.

Η ανάκληση εντολής σε ένα κύκλο εντολής απαιτεί ένα κύκλο μηχανής για κάθε λέξη της εντολής που ανακαλείται. Έτσι, αν οι εντολές ενός μικροεπεξεργαστή έχουν μήκος από 1 ως 3 λέξεις μνήμης η ανάκληση μιας εντολής διαρκεί από 1 ως 3 κύκλους μηχανής αντίστοιχα. Το πλήθος των κύκλων μηχανής που απαιτούνται για την εκτέλεση μιας εντολής εξαρτάται από την εντολή. Κάποιες εντολές δεν απαιτούν για την εκτέλεσή τους πρόσθετους κύκλους μηχανής από την ανάκληση της εντολής και μετά. Άλλες χρειάζονται επιπλέον κύκλους για να εκτελέσουν μια πράξη, να γράψουν ή να διαβάσουν στη μνήμη ή σε θύρα εισόδου-εξόδου.
Άσκηση
Ανατροφοδότηση
Σωστό
Ανατροφοδότηση
Σωστό
Ανατροφοδότηση
Σωστό
Ανατροφοδότηση
Σωστό
Ανατροφοδότηση
Σωστό
Είδη εντολών
.png)
Ο εντολές ενός μικροεπεξεργαστή διακρίνονται γενικά στις ακόλουθες κατηγορίες:
- Εντολές μεταφοράς δεδομένων.
Οι εντολές αυτές μεταφέρουν δεδομένα μεταξύ καταχωρητών και μνήμης και δεν επηρεάζουν τις σημαίες κατάστασης.
- Εντολές αριθμητικών πράξεων
Οι εντολές αυτές πραγματοποιούν αριθμητικές πράξεις σε δεδομένα που βρίσκονται στους καταχωρητές και στη μνήμη. Πρέπει να σημειωθεί ότι η ALU μπορεί να εκτελέσει πράξεις συνήθως μόνο μεταξύ των καταχωρητών του μικροεπεξεργαστή. Στην περίπτωση που θέλουμε να εκτελεστούν πράξεις μεταξύ αριθμών που βρίσκονται στη μνήμη πρέπει να μεταφερθούν οι αριθμοί αυτοί στους καταχωρητές του μικροεπεξεργαστή. Γενικά, οι εντολές αυτές επηρεάζουν τις σημαίες.
- Εντολές λογικών πράξεων
Οι εντολές αυτές υλοποιούν λογικές πράξεις σε δεδομένα που βρίσκονται στους καταχωρητές στη μνήμη και σε σημαίες κατάστασης. Η λογική πράξη επιτελείται συνήθως μεταξύ περισσότερων από ένα bit. Έτσι, με μια εντολή εκτελούνται ταυτόχρονα n λογικές πράξεις.
- Εντολές άλματος
Κανονικά, οι εντολές ενός προγράμματος εκτελούνται σε σειρά η μια μετά την άλλη. Οι εντολές άλματος αλλάζουν την ροή εκτέλεσης, γι' αυτό και ονομάζονται εντολές διακλάδωσης. Έτσι, όταν εκτελείται μια εντολή άλματος, αντί να εκτελεστεί η επόμενη εντολή, ο έλεγχος μεταφέρεται σε άλλο σημείο του προγράμματος. Το σημείο αυτό μπορεί να είναι οπουδήποτε στο πρόγραμμα, σε διεύθυνση που καθορίζεται από την εντολή άλματος. Υπάρχουν εντολές άλματος υπό συνθήκη και χωρίς συνθήκη. Οι εντολές άλματος χωρίς συνθήκη απλά μεταφέρουν την καθορισμένη διεύθυνση στο μετρητή προγράμματος. Οι εντολές άλματος υπό συνθήκη εξετάζουν την κατάσταση κάποιας από τις σημαίες για να καθοριστεί αν πρέπει να μεταφερθεί ή όχι ο έλεγχος. Για παράδειγμα, αν η εντολή άλματος έχει ως συνθήκη (προϋπόθεση) η σημαία κρατουμένου να είναι 1, τότε ο έλεγχος του προγράμματος θα μεταφερθεί μονο στην περίπτωση που το αποτέλεσμα της τελευταίας πράξης έχει παρουσιάσει κρατούμενο.
Άσκηση
Ποια είναι τα είδη των εντολών ενός μ/Ε;
Άσκηση
Ποια είναι η διαφορά ανάμεσα στις εντολές άλματος χωρίς συνθήκη και τις εντολές άλματος με συνθήκη;
(c) Αμπατζόγλου Γιάννης, MSc Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ84
Αδειοδοτημένο υπό τους όρους Creative Commons Αναφορά Δημιουργού 4.0