12
2.1 Αρχιτεκτονική Υπολογιστών Υπενθυμίζουμε ότι η κεντρική μονάδα επεξεργασίας (central processing unit ή CPU) είναι το κύκλωμα το οποίο εκτελεί λειτουργίες (όπως πρόσθεση και αφαίρεση) πάνω σε δεδομένα και εμπεριέχει την αριθμητική/λογική μονάδα (arithmetic/logic unit), η οποία περιέχει το κύκλωμα που εκτελεί την διαχείριση δεδομένων και την μονάδα έλεγχου (control unit), που περιέχει το κύκλωμα για τον συντονισμό των δραστηριοτήτων της μηχανής. Για την προσωρινή αποθήκευση πληροφοριών, η κεντρική μονάδα επεξεργασίας περιέχει κελιά, ή καταχωρητές 1 , παρόμοια με τα κελιά κύριας μνήμης. Προκείμενου να εκτελεσθεί μια λειτουργία πάνω σε δεδομένα αποθηκευμένα στην κύρια μνήμη, είναι καθήκον της μονάδας έλεγχου να μεταφέρει τα δεδομένα από την μνήμη στους καταχωρητές γενικής χρήσης, να ενημερώσει την αριθμητική/λογική μονάδα ποιοι καταχωρητές περιέχουν τα δεδομένα, να ενεργοποιήσει το κατάλληλο κύκλωμα στην αριθμητική/λογική μονάδα και να την ενημερώσει ποιος καταχωρητής πρέπει να δεχθεί το αποτέλεσμα. Για τον σκοπό της μεταφοράς ακολουθιών bit η CPU της μηχανής και η κεντρική μνήμη συνδέονται μέσω ενός συνόλου καλωδίων που ονομάζεται δίαυλος (bus) (Σχήμα 2.1). Μέσω του δίαυλου η CPU έχει τη δυνατότητα να εξάγει ή να διαβάζει δεδομένα από την κύρια μνήμη παρέχοντας την διεύθυνση του σχετικού κελιού μνήμης μαζί με την εντολή ανάγνωσης. Με παρόμοιο τρόπο η CPU έχει την δυνατότητα να τοποθετήσει ή να γράψει δεδομένα στην μνήμη παρέχοντας την διεύθυνση του κελιού προορισμού και τα δεδομένα προς έγγραφη μαζί με την εντολή εγγραφής. Καταχωρητές Αριθμητική/λογική μονάδα Μονάδα ελέγχου Κεντρική μονάδα επεξεργασίας Δίαυλος Κύρια μνήμη Σχήμα 2.1 : Απλοποιημένη αρχιτεκτονική ενός Υπολογιστικού Συστήματος Βάσει αυτού του σχεδιασμού η διαδικασία πρόσθεσης δυο τιμών αποθηκευμένων στην κύρια μνήμη συνεπάγεται περισσότερα από την απλή εκτέλεση της λειτουργίας της πρόσθεσης. Η διαδικασία περιλαμβάνει τις συνδυασμένες προσπάθειες της μονάδας ελέγχου, η οποία συντονίζει την μεταφορά πληροφοριών μεταξύ της κύριας μνήμης και των καταχωρητών μέσα στην κεντρική μονάδα ελέγχου, και της αριθμητικής/λογικής μονάδας, η οποία εκτελεί την λειτουργία της πρόσθεσης όταν δεχθεί την εντολή από την μονάδα έλεγχου. 1 Θα συναντήσουμε μερικούς καταχωρητές ειδικής χρήσης στην ενότητα 2.3.

κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

2.1 Αρχιτεκτονική Υπολογιστών Υπενθυµίζουµε ότι η κεντρική µονάδα επεξεργασίας (central processing unit ή CPU) είναι το κύκλωµα το οποίο εκτελεί λειτουργίες (όπως πρόσθεση και αφαίρεση) πάνω σε δεδοµένα και εµπεριέχει την αριθµητική/λογική µονάδα (arithmetic/logic unit), η οποία περιέχει το κύκλωµα που εκτελεί την διαχείριση δεδοµένων και την µονάδα έλεγχου (control unit), που περιέχει το κύκλωµα για τον συντονισµό των δραστηριοτήτων της µηχανής. Για την προσωρινή αποθήκευση πληροφοριών, η κεντρική µονάδα επεξεργασίας περιέχει κελιά, ή καταχωρητές1, παρόµοια µε τα κελιά κύριας µνήµης. Προκείµενου να εκτελεσθεί µια λειτουργία πάνω σε δεδοµένα αποθηκευµένα στην κύρια µνήµη, είναι καθήκον της µονάδας έλεγχου να µεταφέρει τα δεδοµένα από την µνήµη στους καταχωρητές γενικής χρήσης, να ενηµερώσει την αριθµητική/λογική µονάδα ποιοι καταχωρητές περιέχουν τα δεδοµένα, να ενεργοποιήσει το κατάλληλο κύκλωµα στην αριθµητική/λογική µονάδα και να την ενηµερώσει ποιος καταχωρητής πρέπει να δεχθεί το αποτέλεσµα. Για τον σκοπό της µεταφοράς ακολουθιών bit η CPU της µηχανής και η κεντρική µνήµη συνδέονται µέσω ενός συνόλου καλωδίων που ονοµάζεται δίαυλος (bus) (Σχήµα 2.1). Μέσω του δίαυλου η CPU έχει τη δυνατότητα να εξάγει ή να διαβάζει δεδοµένα από την κύρια µνήµη παρέχοντας την διεύθυνση του σχετικού κελιού µνήµης µαζί µε την εντολή ανάγνωσης. Με παρόµοιο τρόπο η CPU έχει την δυνατότητα να τοποθετήσει ή να γράψει δεδοµένα στην µνήµη παρέχοντας την διεύθυνση του κελιού προορισµού και τα δεδοµένα προς έγγραφη µαζί µε την εντολή εγγραφής.

Καταχωρητές

Αριθµητική/λογικήµονάδα

Μονάδαελέγχου

Κεντρική µονάδα επεξεργασίας

Δίαυλος

Κύριαµνήµη

Σχήµα 2.1 : Απλοποιηµένη αρχιτεκτονική ενός Υπολογιστικού Συστήµατος

Βάσει αυτού του σχεδιασµού η διαδικασία πρόσθεσης δυο τιµών αποθηκευµένων στην κύρια µνήµη συνεπάγεται περισσότερα από την απλή εκτέλεση της λειτουργίας της πρόσθεσης. Η διαδικασία περιλαµβάνει τις συνδυασµένες προσπάθειες της µονάδας ελέγχου, η οποία συντονίζει την µεταφορά πληροφοριών µεταξύ της κύριας µνήµης και των καταχωρητών µέσα στην κεντρική µονάδα ελέγχου, και της αριθµητικής/λογικής µονάδας, η οποία εκτελεί την λειτουργία της πρόσθεσης όταν δεχθεί την εντολή από την µονάδα έλεγχου. 1 Θα συναντήσουµε µερικούς καταχωρητές ειδικής χρήσης στην ενότητα 2.3.

Page 2: κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

Η πλήρης διαδικασία της πρόσθεσης δυο τιµών αποθηκευµένων στην κύρια µνήµη µπορεί να διασπασθεί σε πέντε βήµατα:

Βήµα 1: Ανάκληση µιας από τις τιµές που πρόκειται να προστεθούν και τοποθέτησή της σε έναν καταχωρητή.

Βήµα 2: Ανάκληση της άλλης τιµή που πρόκειται να προστεθεί και τοποθέτησή της σε έναν άλλο καταχωρητή.

Βήµα 3: Ενεργοποίηση του κυκλώµατος πρόσθεσης µε τους καταχωρητές των βηµάτων 1 και 2 σαν δεδοµένα και έναν άλλο καταχωρητή καθορισµένο για να δεχθεί το αποτέλεσµα.

Βήµα 4: Αποθήκευση του αποτελέσµατος στην µνήµη.

Βήµα 5: Τέλος. Εν συντοµία, τα δεδοµένα πρέπει να µεταφερθούν από την κύρια µνήµη στην CPU, οι τιµές πρέπει να προστεθούν στην CPU και το αποτέλεσµα να αποθηκευθεί σε ένα κελί µνήµης.

Οι πρώτοι υπολογιστές δεν ήταν ιδιαίτερα ευέλικτοι - υπήρχε η τάση τα βήµατα που εκτελούσε κάθε συσκευή να ενσωµατώνονται στην µονάδα έλεγχου σαν κοµµάτι της µηχανής. Για να αποκτηθεί περισσότερη ευελιξία κάποιοι από τους πρώτους υπολογιστές ήταν έτσι σχεδιασµένοι, ώστε να είναι εύκολη η αλλαγή των καλωδίων στη µονάδα έλεγχου. Αυτή η ευελιξία έγινε εφικτή µε διατάξεις σαν αυτές των παλιών τηλεφωνικών πινάκων πάνω στις οποίες τα άκρα των καλωδίων συνδέονταν σε διαφορετικές υποδοχές. Επαναστατική πρόοδος (η οποία λανθασµένα αποδόθηκε2 στον John von Neumann) σηµειώθηκε µε την διαπίστωση ότι ένα πρόγραµµα, ακριβώς όπως και τα δεδοµένα, µπορεί να κωδικοποιηθεί και να αποθηκευθεί στην κύρια µνήµη. Αν η µονάδα έλεγχου είναι σχεδιασµένη να εξάγει το πρόγραµµα από την µνήµη, να αποκωδικοποιεί τις εντολές και να τις εκτελεί, τότε το πρόγραµµα του υπολογιστή µπορεί να αλλάξει απλώς µε την αλλαγή των περιεχοµένων της µνήµης του υπολογιστή αντί µε την αλλαγή των καλωδίων της µονάδας έλεγχου.

Η αρχή του αποθηκευµένου προγράµµατος (stored-program concept) έχει γίνει τόσο συνήθης και δεδοµένη προσέγγιση που χρησιµοποιείται σήµερα που στην πραγµατικότητα φαίνεται προφανής. Αυτό που την έκανε δύσκολη αρχικά ήταν το γεγονός ότι όλοι σκέφτονταν τα προγράµµατα και τα δεδοµένα σαν διαφορετικές

2 Ποιος επινόησε τι; Η αναγνώριση ενός µόνο ατόµου για µια εφεύρεση είναι πάντα αµφίβολη. Ο λαµπτήρας πυρακτώσεως αποδόθηκε στον Thomas Edison, πολλοί άλλοι ερευνητές όµως ανέπτυσσαν παρόµοιους λαµπτήρες και κατά µια έννοια ο Edison ήταν ο τυχερός που εξασφάλισε την πατέντα. Το αεροπλάνο αποδόθηκε στους αδελφούς Wright, οι οποίοι όµως ωφελήθηκαν από την έρευνα άλλων και σε κάποιο βαθµό παρακινήθηκαν από τον Leonardo da Vinci ο οποίος ασχολήθηκε µε την ιδέα των ιπτάµενων µηχανών τον 15ο αιώνα. Ακόµα και τα σχέδια του Leonardo ήταν βασισµένα σε προηγούµενες ιδέες. Σε άλλες περιπτώσεις φαίνεται πως η ιστορία απέδωσε λανθασµένα τιµές - ένα παράδειγµα είναι η αρχή του αποθηκευµένου προγράµµατος. Χωρίς αµφιβολία ο John von Neumann ήταν ένας λαµπρός επιστήµονας που του αξίζει αναγνώριση για τις αρκετές συνεισφορές του στην επιστήµη. Η συνεισφορά του όµως για την οποία η λαϊκή ιστορία επέλεξε να τον τιµήσει, η αρχή του αποθηκευµένου προγράµµατος, αναπτύχθηκε από ερευνητές καθοδηγούµενους από τον J.P.Eckert στο Moore School of Electrical Engineering, University of Pennsylvania. O John von Neumann ήταν απλώς ο πρώτος που δηµοσίευσε έρευνα που ανέφερε αυτήν την ιδέα και έτσι η παράδοση των υπολογιστών τον επέλεξε σαν τον επινοητή.

Page 3: κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

οντότητες: Τα δεδοµένα αποθηκεύονταν στην µνήµη ενώ το προγράµµατα ήταν µέρος της µονάδας έλεγχου.

2.2 Γλώσσα Μηχανής Για να εφαρµοστεί η αρχή αποθηκευµένου προγράµµατος, οι CPU σχεδιάζονται έτσι ώστε να αναγνωρίζουν εντολές (instructions) κωδικοποιηµένες σαν ακολουθίες bit. Η οµάδα εντολών καθώς και το σύστηµα κωδικοποίησης ονοµάζονται γλώσσα µηχανής. Μια εντολή εκφρασµένη σε αυτή τη γλώσσα ονοµάζεται εντολή επιπέδου µηχανής η πιο κοινά εντολή µηχανής.

Το Ρεπερτόριο Εντολών Οι εντολές µπορούν να ταξινοµηθούν σε τρεις κατηγορίες: (1) την οµάδα µεταφοράς δεδοµένων, (2) την αριθµητική/λογική οµάδα και (3) την οµάδα ελέγχου. Μεταφορά Δεδοµένων Η πρώτη οµάδα αποτελείται από εντολές που εκτελούν την µεταφορά δεδοµένων από µια θέση σε µια άλλη. Τα βήµατα 1, 2 και 4 στον αλγόριθµο πρόσθεσης δύο τιµών ανήκουν σε αυτή την κατηγορία. Όπως και στην περίπτωση της κύριας µνήµης, είναι ασυνήθιστο τα δεδοµένα που µεταφέρονται από µια θέση στην µηχανή σε µια άλλη να σβήνονται από την αρχική τους θέση. Η διαδικασία που λαµβάνει χώρα κατά τη µεταφορά δεδοµένων µάλλον αντιγράφει παρά µετακινεί τα αρχεία. Με αυτήν την έννοια η ορολογία «µεταφορά» είναι στην πραγµατικότητα λαθεµένη, ενώ πιο περιγραφικός όρος είναι η «αντιγραφή». Μιας και βρισκόµαστε στο θέµα της ορολογίας θα έπρεπε να αναφέρουµε ότι ειδικοί όροι χρησιµοποιούνται όταν αναφερόµαστε στη µεταφορά δεδοµένων µεταξύ της CPU και της κύριας µνήµης. Η απαίτηση να καταχωρηθούν σε ένα καταχωρητή γενικής χρήσης τα περιεχόµενα ενός κελιού µνήµης αναφέρεται κοινώς σαν εντολή φόρτωσης (LOAD). Αντιστρόφως, η απαίτηση να µεταφερθούν τα δεδοµένα ενός καταχωρητή σε ένα κελί µνήµης καλείται εντολή αποθήκευσης (STORE). Στον αλγόριθµο πρόσθεσης δύο τιµών τα βήµατα 1 και 2 είναι εντολές φόρτωσης ενώ το βήµα 4 αποθήκευσης. Μια σηµαντική οµάδα εντολών εντός της κατηγόριας µεταφοράς αποτελείται από τις εντολές για επικοινωνία µε συσκευές εκτός του περιβάλλοντος CPU- κύριας µνήµης (εκτυπωτές, πληκτρολόγια, οθόνες, disk drives, κλπ). Οι εντολές µεταχειρίζονται τις δραστηριότητες εισόδου/εξόδου (Ι/Ο) της µηχανής και για αυτό καλούνται εντολές (Ι/Ο) και θα τις θεωρήσουµε ως κοµµάτι της οµάδας µεταφοράς δεδοµένων.

Αριθµητική/Λογική Η αριθµητική/λογική οµάδα αποτελείται από εντολές που δίνουν εντολή στην µονάδα ελέγχου να εκτελέσει µια δραστηριότητα µέσα στην αριθµητική/λογική µονάδα. Το βήµα 3 στον αλγόριθµο πρόσθεσης δύο τιµών ανήκει σε αυτήν την οµάδα. Όπως δηλώνει το όνοµα της, η αριθµητική/λογική οµάδα είναι ικανή να εκτελεί και άλλες λειτουργίες εκτός από τις βασικές αριθµητικές. Μερικές από αυτές είναι τα λογικά AND, OR και XOR, τα οποία παρουσιάσαµε στο κεφάλαιο 4. Αυτές οι λειτουργίες χρησιµοποιούνται συχνά για τον χειρισµό µεµονωµένων bit εντός ενός καταχωρητή γενικής χρήσης χωρίς να διαταράσσεται το υπόλοιπο του καταχωρητή. Μια άλλη οµάδα λειτουργιών, διαθέσιµες στις περισσότερες αριθµητικές/λογικές µονάδες επιτρέπει την µετακίνηση των περιεχοµένων του καταχωρητή προς τα δεξιά ή αριστερά. Αυτές οι λειτουργίες είναι γνωστές σαν ολίσθηση (SHIFT) ή περιστροφή (ROTATE), αναλόγως αν τα bit που "πέφτουν από την άκρη" του καταχωρητή απλώς απορρίπτονται (ολίσθηση) ή χρησιµοποιούνται για να γεµίσουν τις τρύπες στην άλλη άκρη του καταχωρητή (περιστροφή).

Page 4: κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

Έλεγχος Η οµάδα ελέγχου αποτελείται από τις εντολές που κατευθύνουν την εκτέλεση του προγράµµατος παρά τον χειρισµό των δεδοµένων. Το βήµα 5 στο αλγόριθµο πρόσθεσης δύο τιµών αποτελεί ένα εξαιρετικά στοιχειώδες παράδειγµα αυτής της κατηγορίας. Αυτή η οµάδα περιέχει πολλές από τις πιο ενδιαφέρουσες εντολές στο ρεπερτόριο µιας µηχανής, όπως την οικογένεια εντολών JUMP ή BRANCH που χρησιµοποιούνται για να κατευθύνουν την µονάδα ελέγχου να εκτελέσει µια εντολή διαφορετική από αυτήν που βρίσκεται αµέσως µετά στην λίστα. Υπάρχουν δυο ειδών εντολές JUMP: Το JUMP χωρίς όρους (unconditional) και το JUMP υπό όρους (conditional). Ένα παράδειγµα του πρώτου θα ήταν η εντολή "Πήδα στο βήµα 5" ενώ του δεύτερου θα ήταν "Αν η τιµή που θα λάβεις είναι 0, τότε πήδα στο βήµα 5". Η διάκριση έγκειται στο ότι το JUMP υπό όρους καταλήγει σε "αλλαγή θέσης" µόνο αν πληρείται µια συγκεκριµένη συνθήκη. Σαν παράδειγµα

Βήµα 1: Φόρτωσε έναν καταχωρητή µε µια τιµή από την µνήµη Βήµα 2: Φόρτωσε έναν δεύτερο καταχωρητή µε άλλη τιµή από την µνήµη.

Βήµα 3: Αν η δεύτερη τιµή είναι 0 πήδα στο Βήµα 6. Βήµα 4: Διαίρεσε το περιεχόµενο του πρώτου καταχωρητή µε αυτό του δεύτερου και

βαλε το αποτέλεσµα σε έναν τρίτο καταχωρητή. Βήµα 5: Αποθήκευσε το περιεχόµενο του τρίτου καταχωρητή στην µνήµη.

Βήµα 6: Τέλος. Η παραπάνω σειρά εντολών αναπαριστά έναν αλγόριθµο διαίρεσης δυο τιµών όπου το βήµα 3 αποτελεί ένα JUMP υπό όρους που προστατεύει έναντι της πιθανότητας διαίρεσης µε το 0.

Μια Επεξηγηµατική Γλώσσα Μηχανής Ας σκεφτούµε πως κωδικοποιούνται οι εντολές µιας τυπικής µηχανής. Η µηχανή που θα χρησιµοποιήσουµε για την συζήτηση µας συνοψίζεται στο Σχήµα 2.4. Έχει 16 καταχωρητες γενικής χρήσης και 256 κελιά κύριας µνήµης, κάθε ένα µε χωρητικότητα 8 bit. Αριθµούµε τους καταχωρητές µε τιµές από 0 έως 15 και δίνουµε στα κελιά µνήµης διευθύνσεις µε τις τιµές από 0 έως 255. Για ευκολία εκφράζουµε τόσο τις τιµές των καταχωρητων όσο και τις διευθύνσεις στο δυαδικό σύστηµα (για συντοµία, χρησιµοποιούµε το δεκαεξαδικό σύστηµα). Έτσι οι καταχωρητές αριθµούνται από 0 έως F και τα κελιά έχουν διεύθυνση µνήµης από 00 έως FF.

Κεντρική µονάδα επεξεργασίας

Μονάδα ελέγχου

Δίαυλος

Κύριαµνήµη

0

1

2

F

Μετρητής Προγράµµατος

Καταχωρητής οδηγίας

00

01

02

03

FF

Αριθµητική/λογικήµονάδα Καταχωρητές

Διευθύνσεις Κελιά

Σχήµα 2.4 : Η αρχιτεκτονική µιας µηχανής-παράδειγµα

Η κωδικοποιηµένη µορφή µιας εντολής µηχανής τυπικά αποτελείται από δυο µέρη:

Page 5: κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

• το πεδίο κώδικα λειτουργίας (op-code field) όπου η ακολουθία bit που εµφανίζεται δηλώνει ποιες από τις στοιχειώδεις λειτουργίες, όπως STORE, SHIFT, XOR και JUMP, απαιτούνται από την εντολή, και

• το πεδίο τελεστή (operand field) όπου οι εκεί ακολουθίες bit παρέχουν πιο λεπτοµερείς πληροφορίες για την λειτουργία που καθορίζεται από τον κώδικα λειτουργίας.

Για παράδειγµα στην λειτουργία STORE η πληροφορία στο πεδίο τελεστή δηλώνει ποιος καταχωρητής περιέχει τα δεδοµένα προς αποθήκευση και ποιο κελί µνήµης θα τα δεχθεί. Ολόκληρη η γλώσσα µηχανής της µηχανής-παράδειγµα αποτελείται από 15 µόνο βασικές εντολές. Κάθε µια από αυτές τις εντολές κωδικοποιείται χρησιµοποιώντας 16 bits συνολικά τα οποία αναπαριστώνται µε 4 δεκαεξαδικά ψηφία (Σχήµα 2.5). Ο κώδικας λειτουργίας για κάθε εντολή αποτελείται από τα τέσσερα πρώτα bits ή ισοδύναµα το πρώτο δεκαεξαδικό ψηφίο. Σηµειώνουµε ότι ο κώδικας λειτουργίας αναπαριστάται από τα δεκαεξαδικα ψηφία 1 έως F.

0011 0101 1010 0111

3 5 Α 7

Κώδικαςλειτουργίας

Τελεστής

Πραγµατικό bit pattern(16 bits)

Δεκαεξαδική µορφή(4 ψηφια)

Σχήµα 2.5: Η σύνθεση µιας εντολής για την µηχανή-παράδειγµα

Κώδικας Λειτουργ.

Τελεστές Εντολή Λειτουργία

2 RXY load R,XY register[R]:=XY 1 RXY load R,[XY] register[R]:=memory[XY] 3 RXY store R,[XY] memory[XY]:=register[R] D ORS load R,[S] register[R]:=memory[register[S]] E ORS store R,[s] memory[register[S]]:=register[R] 4 ORS move S,R register[S]:=register[R] 5 RST addi R,S,T register[R]=register[S]+register[T]

integerc add 6 RST addf R,S,T register[R]:=register[S]=+register[T]

floatihng-point add 7 RST or R,S,T register[R]:=register[S] OR register[T]

bitwise OR 8 RST and R,S,T register[R]:=register[S]AND register[T]

bitwise AND 9 RST xor R,S,T register[R]:=register[S] XOR register[T]

bitwise eXclusive OR A ROX ror R,X register[R]:=register[R]ROR X

RΟtate Right register R for X times B RXY

OXY jmpEQ R=RO,XY

PC:=XY, if R=RO PC:=XY

Page 6: κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

jmp XY F RXY jmpLE

R<=RO,XY PC:=XY , if R≤RO

C OOO halt halt program Πίνακας: Το ρεπερτόριο εντολών της µηχανής-παράδειγµα

Συγκεκριµένα ο ανωτέρω πίνακας µας δείχνει ότι µια εντολή που ξεκινάει µε το δεκαεξαδικό ψηφίο 3 αναφέρεται σε εντολή STORE και µια εντολή που ξεκινάει µε το δεκαεξαδικο ψηφίο Α αναφέρεται σε εντολή ROTATE.

Το πεδίο τελεστή στην µηχανή-παράδειγµα αποτελείται από τρία δεκαεξαδικα ψηφία (12 bits) και σε κάθε περίπτωση (εκτός από την εντολή HALT που δεν χρειάζεται περαιτέρω επεξεργασία) διευκρινίζει την γενική εντολή που έχει δοθεί από τον κώδικα λειτουργίας. Για παράδειγµα (Σχήµα 2.6) αν το πρώτο δεκαεξαδικο ψηφίο της εντολής ήταν 3 (ο κώδικας λειτουργίας για την αποθήκευση των περιεχοµένων ενός καταχωρητή), το επόµενο δεκαεξαδικο ψηφίο της εντολής θα υποδείκνυε ποιος καταχωρητής θα αποθηκευθεί και τα δυο τελευταία ψηφία θα υποδείκνυαν πιο κελί µνήµης θα δεχθεί τα δεδοµένα. Έτσι η εντολή 35Α7 (δεκαεξαδική) µεταφράζεται στην δήλωση "αποθήκευσε την ακολουθία bit που βρίσκεται στον καταχωρητή 5 στο κελί µνήµης µε διεύθυνση Α7."

3 5 A 7

Κώδικας λειτουργίας 3 σηµαίνει νααποθηκευθούν τα περιεχόµενα ενόςκαταχωρητή σε ενα κελί µνήµης

Αυτό το κοµµάτι του τελεστή αναγνωρίζει τονκαταχωρητή του οποίου τα περιεχόµενα θααποθηκευθούν.

Αυτό το κοµµάτι του τελεστή αναγνωρίζει τηννδιέυθυνση το κελιού µνήµης που θα δεχθεί ταδεδοµένα

Εντολή

Σχήµα 2.6: Αποκωδικοποίηση της εντολής 35Α7 Σαν άλλο παράδειγµα ο κώδικας λειτουργίας 7 (δεκαεξαδικο) απαιτεί την λογική σύγκριση (ΟR) των περιεχοµένων δυο καταχωρητών. Σε αυτή τη περίπτωση το επόµενο δεκαεξαδικό ψηφίο υποδεικνύει που πρέπει να τοποθετηθεί το αποτέλεσµα, ενώ τα δυο τελευταία ψηφία του πεδίου τελεστή χρησιµοποιούνται για να υποδείξουν ποιοι δυο καταχωρητές θα συγκριθούν. Έτσι η εντολή 70C5 µεταφράζεται στην δήλωση "σύγκρινε τα περιεχόµενα του καταχωρητή C µε τα περιεχόµενα του καταχωρητή 5 και τοποθέτησε το αποτέλεσµα στον καταχωρητή 0."

Υπάρχει µια λεπτή διάκριση µεταξύ των δυο εντολών φόρτωσης της µηχανής µας. Βλέπουµε ότι ο κώδικας λειτουργίας 1 (δεκαεξαδικο) αναφέρεται στην εντολή που φορτώνει σε έναν καταχωρητή τα περιεχόµενα ενός κελιού µνήµης, ενώ ο κώδικας λειτουργίας 2 (δεκαεξαδικό) αναφέρεται στην εντολή που φορτώνει σε έναν καταχωρητή µια συγκεκριµένη τιµή. Η διάφορα είναι ότι το πεδίο τελεστή σε µια εντολή πρώτου τύπου περιέχει µια διεύθυνση ενώ στον δεύτερο τύπο περιέχει την ακολουθία bit που πρόκειται να φορτωθεί. Σηµειώνουµε ότι η µηχανή έχει δυο εντολές πρόσθεσης (ADD): µια για την πρόσθεση ακεραίων σε µορφή συµπληρώµατος ως προς 2 και µια για την πρόσθεση αριθµών κινητής υποδιαστολής. Η διάκριση προκύπτει από το γεγονός ότι η πρόσθεση ακολουθιών bit τα οποία αναπαριστούν τιµές κωδικοποιηµένες σε µορφή

Page 7: κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

συµπληρώµατος ως προς 2 απαιτεί διαφορετικές δραστηριότητες της αριθµητικής/λογικής µονάδας από ότι η πρόσθεση αριθµών κινητής υποδιαστολής.

Κλείνουµε αυτήν την ενότητα µε το Σχήµα 2.7 το οποίο περιέχει µια κωδικοποιηµένη µορφή των εντολών του αλγόριθµου πρόσθεσης δύο αριθµών. Έχουµε θεωρήσει ότι οι τιµές που πρόκειται να προστεθούν είναι αποθηκευµένες σε µορφή συµπληρώµατος ως προς 2 στις διευθύνσεις µνήµης 6C και 6D και το άθροισµα πρόκειται να τοποθετηθεί στο κελί µνήµης 6Ε.

Κωδικοποιηµένη Μορφή Μετάφραση

156C Φόρτωσε στον καταχωρητή 5 την ακολουθία bit που βρίσκεται στο κελί µνήµης στην διεύθυνση 6C.

166D Φόρτωσε στον καταχωρητή 6 την ακολουθία bit που βρίσκεται στο κελί µνήµης στην διεύθυνση 6D.

5056 Πρόσθεσε τα περιεχόµενα των καταχωρητών 5 και 6 σαν αναπαραστάσεις συµπληρώµατος ως προς 2 και τοποθέτησε το αποτέλεσµα στον καταχωρητή 0.

306E Αποθήκευσε τα περιεχόµενα του καταχωρητή 0 στο κελί µνήµης στην διεύθυνση 6Ε.

C000 Τέλος

Σχήµα 2.7: Η κωδικοποιηµένη µορφή των εντολών του αλγορίθµου πρόσθεσης 2 ακεραίων

2.3 Εκτέλεση προγράµµατος Ο υπολογιστής ακολουθεί ένα πρόγραµµα αποθηκευµένο στη µνήµη του αντιγράφοντας τις εντολές από την µνήµη στην µονάδα ελέγχου. Όταν πια βρίσκονται στην µονάδα ελέγχου, κάθε εντολή αποκωδικοποιείται και εκτελείται. Η σειρά µε την οποία ανακαλούνται οι εντολές από την µνήµη αντιστοιχεί στην σειρά µε την οποία είναι αποθηκευµένες στην µνήµη εκτός και αν καθορίζεται αλλιώς από µια JUMP εντολή. Προκείµενου να κατανοήσουµε πως λαµβάνει χώρα η συνολική διαδικασία εκτέλεσης, είναι απαραίτητο να ρίξουµε µια πιο κοντινή µάτια στην µονάδα ελέγχου µέσα στη CPU. Μέσα σε αυτή τη µονάδα βρίσκονται δυο καταχωρητές ειδικής χρήσης:

• ο µετρητής προγράµµατος (program counter) που περιέχει την διεύθυνση της επόµενης εντολής που πρόκειται να εκτελεστεί, όποτε χρησιµεύει στην µηχανή για να παρακολουθεί που βρίσκεται στο πρόγραµµα, και

• ο καταχωρητής εντολής (instruction register) (βλέπε ξανά Σχήµα 2.4) που χρησιµοποιείται για να κρατά την εντολή η οποία εκτελείται.

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

• Κατά την διάρκεια του βήµατος ανάκλησης, η µονάδα έλεγχου απαιτεί η κύρια µνήµη να της προµηθεύσει την εντολή που είναι αποθηκευµένη στην διεύθυνση που υποδεικνύει ο µετρητής προγράµµατος της µονάδας έλεγχου. Εφόσον κάθε εντολή στη µηχανή µας έχει µήκος δυο bytes, η διαδικασία ανάκλησης απαιτεί την µεταφορά των περιεχοµένων δυο κελιών µνήµης από την κύρια µνήµη. Η µονάδα

Page 8: κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

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

• Ενώ η εντολή βρίσκεται στον καταχωρητή εντολής, η µονάδα ελέγχου προχωράει στην αποκωδικοποίηση κάτι το οποίο περιλαµβάνει τον διαχωρισµό του πεδίου τελεστή στα κανονικά του συστατικά βάσει του κώδικα λειτουργίας.

• Στη συνέχεια, στο βήµα εκτέλεσης, η µονάδα έλεγχου ενεργοποιεί το κατάλληλο κύκλωµα για να εκτελέσει την επιθυµητή λειτουργία. Για παράδειγµα αν η εντολή είναι µια φόρτωση από την µνήµη, η µονάδα έλεγχου προκαλεί την πραγµατοποίηση της. Αν η εντολή είναι για µια αριθµητική λειτουργία, η µονάδα ελέγχου ενεργοποιεί το κατάλληλο κύκλωµα στην αριθµητική/λογική µονάδα µε τους κατάλληλους καταχωρητές σαν εισόδους.

1. Ανάκληση της επόµενηςεντολής απο την µνήµη(οπως καθορίζεται απο τονµετρητή προγράµµατος)και αύξηση του µετρητήπρογράµµατος

Ανάκληση

Εκτέλεση

2. Aποκωδικοποίηση τηςακολουθίας bit απο τονκαταχωρητή εντολής

Αποκωδικοποίηση

3. Εκτέλεση της λειτουργίας πουκαθοριζεται απο την οδηγιαστον καταχωρητή εντολής

Σχήµα 2.8: Φάσεις του κύκλου µηχανής

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

Μια, σε κάποιο βαθµό, ειδική περίπτωση είναι η εκτέλεση της εντολής JUMP. Αναλογιστείτε για παράδειγµα την εκτέλεση της εντολής Β258 (Σχήµα 2.9), που σηµαίνει "πήδα στην εντολή στην διεύθυνση 58 αν το περιεχόµενο του καταχωρητή 2 είναι ίδιο µε του καταχωρητή 0". Σε αυτή τη περίπτωση το βήµα εκτέλεσης του κύκλου µηχανής ξεκινάει µε την σύγκριση των καταχωρητών 2 και 0. Αν περιέχουν διαφορετικές ακολουθίες bit, το βήµα εκτέλεσης τερµατίζει και ξεκινάει ο επόµενος κύκλος µηχανής. Αν ωστόσο τα περιεχόµενα αυτών των καταχωρητών είναι ίσα η µηχανή τοποθετεί την τιµή 58 στον µετρητή προγράµµατος, όποτε η εντολή σε αυτή την διεύθυνση είναι η επόµενη που λαµβάνεται και εκτελείται.

Page 9: κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

B 2 5 8Κώδικας λειτουργίας Β σηµαίνει νααλλαχθεί η τιµή του µετρητήπρογράµµατος αν το περιεχόµενοτου υποδεδειγµένου καταχωρητήείναι το ίδιο µε αυτό τουκαταχωρητή 0

Αυτό το κοµµάτι του τελεστή προσδιορίζει τονκαταχωρητή ο οποίος θα συγκριθεί µε τονκαταχωρητή 0.

Εντολή

Αυτό το κοµµάτι του τελεστή ειναι η διέυθυνση ηοποία θα καταχωρηθεί στον µετρητήπρογράµµατος.

Σχήµα 2.9: Αποκωδικοποίηση της εντολής Β258

Σηµειώνουµε ότι αν η εντολή ήταν Β058 τότε η απόφαση για το αν ο µετρητής προγράµµατος θα έπρεπε να αλλάξει θα εξαρτόταν από το αν το περιεχόµενο του καταχωρητή 0 ισούται µε αυτό του καταχωρητή 0. Πρόκειται όµως για τον ίδιο καταχωρητή και άρα τα περιεχόµενα είναι ίδια. Με τον ίδιο τρόπο κάθε εντολή της µορφής Β0ΧΥ οδηγεί σε JUMP στην θέση µνήµης ΧΥ. Ένα Παράδειγµα Εκτέλεσης Προγράµµατος

Ας ακολουθήσουµε τον κύκλο µηχανής που εφαρµόζεται για το πρόγραµµα που παρουσιάζεται στο Σχήµα 2.7, το οποίο ανακαλεί δυο τιµές από την κύρια µνήµη, υπολογίζει το άθροισµα τους και αποθηκεύει το αποτέλεσµα σε ένα κελί της κύριας µνήµης. Πρώτα πρέπει να αποθηκεύσουµε το πρόγραµµα κάπου στην µνήµη. Για το παράδειγµα µας υποθέτουµε ότι αποθηκεύεται σε διαδοχικές διευθύνσεις, ξεκινώντας από την διεύθυνση Α0 (δεκαεξαδικό). Με το πρόγραµµα αποθηκευµένο κατά αυτόν τον τρόπο µπορούµε να ξεκινήσουµε την εκτέλεση του προγράµµατος από την µηχανή τοποθετώντας την διεύθυνση (Α0) της πρώτης εντολής στον µετρητή προγράµµατος και ξεκινώντας την µηχανή (Σχήµα 2.10).

Το πρόγραµµα ειναιαποθηκευµένο στηνµνήµη ξεκινώνταςαπο την διέυθυνσηΑ0

Κεντρική µονάδα επεξεργασίας

Δίαυλος

0

1

2

F

Μετρητής Προγράµµατος

Καταχωρητής εντολής

Α2Α3

Α9

Διέυθυνση Κελιά

Α0

Α1Α0 15

6C16

Κύρια µνήµη

Ο µετρητής προγράµµατοςπεριέχει την διέυθυνση τηςπρώτης εντολής

Καταχωρητές

Α4Α5Α6Α7Α8

6D5056306EC000

.

.

.

Σχήµα 2.10: Το πρόγραµµα του Σχήµατος 2.7 αποθηκευµένο στην κύρια µνήµη

έτοιµο για εκτέλεση

H µονάδα ελέγχου ξεκινάει το βήµα ανάκλησης του κύκλου µηχανής εξάγοντας την εντολή της θέσης Α0 και τοποθετώντας αυτήν την εντολή (156C) στον καταχωρητη εντολής της. (Σχήµα 2.11α).

Page 10: κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

Κεντρική µονάδαεπεξεργασίας

ΔίαυλοςΜετρητής Προγράµµατος

Καταχωρητής οδηγίας Α2

Α3

Διέυθυνση Κελιά

Α0

Α1Α0

Κύρια µνήµη

156C

15

166C

6D

Σχήµα 2.11α: Εκτέλεση του βήµατος λήψης του κύκλου µηχανής: Στην αρχή του

βήµατος η εντολή που αρχίζει από την διεύθυνση Α0 ανακαλείται από την µνήµη και τοποθετείται στον καταχωρητή εντολής.

Προσέξτε ότι στην µηχανή - παράδειγµα όλες3 οι εντολές έχουν µήκος 16 bit (δυο bytes). Έτσι η εντολή που πρέπει να ανακληθεί καταλαµβάνει τα κελιά µνήµης τόσο στην διεύθυνση Α0 όσο και στην Α1. Η µονάδα ελέγχου είναι σχεδιασµένη να λαµβάνει το γεγονός αυτό υπ’ όψιν και έτσι µεταφέρει τα περιεχόµενα και των δυο κελιών και τοποθετεί τις ακολουθίες bit που έχει λάβει στον καταχωρητή εντολών, ο οποίος έχει µήκος 16 bit. Η µονάδα ελέγχου τότε προσθέτει δυο στον µετρητή προγράµµατος ώστε αυτός ο καταχωρητής να περιέχει την διεύθυνση της επόµενης εντολής (Σχήµα 2.11β). Στο τέλος του βήµατος ανάκλησης του πρώτου κύκλου µηχανής, ο µετρητής προγράµµατος και ο καταχωρητής εντολής περιέχουν τα ακόλουθα δεδοµένα:

Μετρητής Προγράµµατος: Α2 Καταχωρητης Εντολής: 156C

Κεντρική µονάδαεπεξεργασίας

ΔίαυλοςΜετρητής Προγράµµατος

Καταχωρητής οδηγίας Α2

Α3

Διέυθυνση Κελιά

Α2

Α1Α0

Κύρια µνήµη

156C

15

166C

6D

Σχήµα 2.11β: Εκτέλεση του βήµατος λήψης του κύκλου µηχανής: Στην συνεχεία ο µετρητής προγράµµατος αυξάνεται έτσι ώστε να υποδεικνύει την επόµενη εντολή.

3 Για λόγους απλούστευσης, η γλώσσα µηχανής του υπολογιστή-παράδειγµα χρησιµοποιεί ένα σταθερό µήκος (δυο bytes) για όλες τις εντολές. Έτσι για να φέρει µια εντολή η CPU πάντα ανακτά τα περιεχόµενα δυο διαδοχικών κελιών µνήµης και αυξάνει τον µετρητή προγράµµατος της κατά δυο. Στην πραγµατικότητα οι περισσότερες γλώσσες µηχανής χρησιµοποιούν εντολές διαφορετικών µήκων. Για παράδειγµα η σειρά Pentium έχει εντολές που ποικίλουν από εντολές ενός byte µέχρι εντολές πολλών bytes των οποίο το µήκος εξαρτάται από την ακριβή χρήση της εντολής. Οι CPU µε τέτοιες γλώσσες µηχανής καθορίζουν το µήκος της εισερχόµενης εντολής από τον κώδικα λειτουργίας της εντολής. Αυτό σηµαίνει ότι η CPU πρώτα λαµβάνει τον κώδικα λειτουργίας και αναλόγως µε την ακολουθία bit που λαµβάνει γνωρίζει ποσά ακόµα bytes να φέρει για να αποκτήσει την υπόλοιπη εντολή.

Page 11: κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

Στην συνεχεία η µονάδα ελέγχου αναλύει την εντολή στον καταχωρητή εντολής της και συµπεραίνει ότι πρέπει να φορτώσει στον καταχωρητή 5 τα περιεχόµενα του κελιού µνήµης στην διεύθυνση 6C. Αυτή η διαδικασία φόρτωσης εκτελείται κατά τη διάρκεια του βήµατος εκτέλεσης του κύκλου µηχανής και τότε η µονάδα ελέγχου ξεκινά τον επόµενο κύκλο. Αυτός ο κύκλος ξεκινά ανακαλόντας την εντολή 166D από τα δυο κελιά µνήµης αρχίζοντας από την διεύθυνση Α2. Η µονάδα ελέγχου τοποθετεί την εντολή στον καταχωρητή εντολής και αυξάνει τον µετρητή προγράµµατος στο Α4. Οι τιµές στον µετρητή προγράµµατος και στον καταχωρητή εντολών γίνονται:

Μετρητής Προγράµµατος: A4 Καταχωρητης Εντολής: 166D

Ακολούθως η µονάδα ελέγχου αποκωδικοποιεί την εντολή 166D και καθορίζει ότι πρέπει να φορτώσει στον καταχωρητή 6 τα περιεχόµενα της µνήµης στην διεύθυνση 6D. Στη συνεχεία εκτελεί την εντολή όποτε ο καταχωρητής 6 πράγµατι φορτώνεται.

Αφού ο µετρητής προγράµµατος περιέχει τώρα την διεύθυνση Α4, η µονάδα ελέγχου εξάγει την επόµενη εντολή που ξεκινά από αυτήν την διεύθυνση. Το αποτέλεσµα είναι ότι η εντολή 5056 τοποθετείται στον καταχωρητή εντολής και ο µετρητής προγράµµατος αυξάνεται στο Α6. Η µονάδα ελέγχου τώρα αποκωδικοποιεί τα περιεχόµενα του καταχωρητή εντολής και τα εκτελεί ενεργοποιώντας το κύκλωµα πρόσθεσης ακεραίων σε µορφή συµπληρώµατος ως προς 2 µε εισόδους τους καταχωρητές 5 και 6. Κατά τη διάρκεια αυτού του βήµατος εκτέλεσης, η αριθµητική/λογική µονάδα εκτελεί την επιθυµητή πρόσθεση, τοποθετεί το αποτέλεσµα στον καταχωρητη 0 (όπως απαιτείται από την µονάδα ελέγχου) και αναφέρει στην µονάδα ελέγχου ότι τελείωσε. Η µονάδα ελέγχου τότε ξεκινά τον επόµενο κύκλο µηχανής. Για άλλη µια φορά µε τη βοήθεια του µετρητή προγράµµατος λαµβάνει την επόµενη εντολή (306Ε) από τα δυο κελιά µνήµης αρχίζοντας από την θέση µνήµης Α6 και αυξάνει τον µετρητή προγράµµατος στο Α8. Η εντολή αποκωδικοποιείται και εκτελείται. Σε αυτό το σηµείο το άθροισµα τοποθετείται στην θέση µνήµης 6Ε. Η επόµενη εντολή λαµβάνεται αρχίζοντας από τη θέση µνήµης Α8 και ο µετρητής προγράµµατος αυξάνεται στο ΑΑ. Τα περιεχόµενα του καταχωρητή εντολής (C000) αποκωδικοποιούνται τώρα σαν εντολή παύσης (HALT). Συνεπώς η µηχανή σταµατά Κατά τη διάρκεια του βήµατος εκτέλεσης του κύκλου µηχανής και το πρόγραµµα τερµατίζεται.

Βλέπουµε λοιπόν ότι η εκτέλεση ενός προγράµµατος, αποθηκευµένου στη µνήµη, συνεπάγεται την ίδια διαδικασία που θα χρησιµοποιούσαµε και εµείς αν θα χρειαζόταν να ακολουθήσουµε µια λεπτοµερή λίστα εντολών. Ενώ εµείς θα παρακολουθούσαµε τη θέση µας διαγράφοντας τις εντολές καθώς τις εκτελούµε ο υπολογιστής παρακολουθεί τη θέση του χρησιµοποιώντας τον µετρητή προγράµµατος. Αφού θα καθορίζαµε ποια εντολή πρέπει να εκτελέσουµε στη συνεχεία, θα την διαβάζαµε και θα εξάγαµε το νόηµα της. Μετά θα την εκτελούσαµε και θα επιστρέφαµε στη λίστα για την επόµενη εντολή µε τον ίδιο τρόπο µε τον οποίο η µηχανή εκτελεί την εντολή που βρίσκεται στον καταχωρητή εντολής και συνεχίζει λαµβάνοντας την επόµενη εντολή. Προγράµµατα και Δεδοµένα

Πολλά προγράµµατα µπορούν να αποθηκευθούν ταυτόχρονα στην κύρια µνήµη του υπολογιστή εφόσον καταλαµβάνουν διαφορετικές θέσεις . Το ποιο πρόγραµµα θα

Page 12: κεντρική µονάδα επεξεργασίαςcourseware.mech.ntua.gr/ml23194/extras/2020-lecture -9.pdf · Μονάδα ελέγχου Κεντρική µονάδα επεξεργασίας

εκτελεστεί µόλις ξεκινήσει η µηχανή µπορεί να καθοριστεί απλώς ρυθµίζοντας κατάλληλα τον µετρητή προγράµµατος.

Πρέπει όµως να έχει κανείς υπ’ όψιν ότι επειδή και τα δεδοµένα περιέχονται στην µνήµη και είναι κωδικοποιηµένα µε µηδενικά και µονάδες, ο υπολογιστής από µόνος του δεν έχει την δυνατότητα να γνωρίζει τι είναι δεδοµένα και τι πρόγραµµα. Αν ο µετρητής προγράµµατος περιέχει µια διεύθυνση δεδοµένων αντί της διεύθυνσης του επιθυµητού προγράµµατος, ο υπολογιστής µην γνωρίζοντας καλλίτερα, εξάγει τις ακολουθίες δεδοµένων σαν να ήταν εντολές και τις εκτελεί. Το τελικό αποτέλεσµα εξαρτάται από τα δεδοµένα. Δεν πρέπει να καταλήξουµε στο συµπέρασµα ότι το να παρέχουµε στα προγράµµατα και τα δεδοµένα την ίδια µορφή είναι κακό. Στην πραγµατικότητα έχει αποδειχθεί ένα χρήσιµο χαρακτηριστικό γιατί επιτρέπει σε ένα πρόγραµµα να διαχειρίζεται αλλά προγράµµατα (ή ακόµα και τον εαυτό του) σαν να ήταν δεδοµένα. Φανταστείτε για παράδειγµα ένα πρόγραµµα που τροποποιεί τον εαυτό του σαν αποτέλεσµα της αλληλεπίδρασης του µε το περιβάλλον του και έτσι παρουσιάζει την ικανότητα να µαθαίνει, ή ίσως ένα πρόγραµµα που γράφει και εκτελεί αλλά προγράµµατα προκείµενου να λύσει προβλήµατα που του παρουσιάζονται.