Κύρια. Κεντρική µονάδα επεξεργασίας. Αριθµητική/λογική µονάδα. Μονάδα ελέγχου. Καταχωρητές. Δίαυλος

Σχετικά έγγραφα
Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

Συστατικά Μέρη των Η/Υ Ανάλυση των επιμέρους τμημάτων των Η/Υ. Η αρχή του αποθηκευμένου προγράμματος Η Γλώσσα Μηχανής

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

Τεχνολογία Υπολογιστικών Συστηµάτων & Λειτουργικά Συστήµατα Κεφάλαιο 3

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Το υλικό του υπολογιστή

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009 ΑΠΑΝΤΗΣΕΙΣ

Σελίδα 1 από 12. Απαντήσεις στο φυλλάδιο 55. Ερώτηση 1 η : Ένα υπολογιστικό σύστηµα αποτελείται από:

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

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Αριθμητικά Συστήματα

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Αρχιτεκτονική Μηχανής. Αποθήκευση εδοµένων

Βασική δοµή και Λειτουργία Υπολογιστή

ΚΕΦΑΛΑΙΟ 2: Χειρισμός Δεδομένων

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

Αρχιτεκτονική υπολογιστών

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

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε.

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Μάθημα 4 ο Πράξεις με bits. Δρ.

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

ΚΕΦΑΛΑΙΟ 2: Χειρισμός Δεδομένων

Εισαγωγή στην Πληροφορική ΓΕΝΙΚΟ ΤΜΗΜΑ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ TEI ΧΑΛΚΙ ΑΣ

Αρχιτεκτονική υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-Ι. Ενότητα 1: Εισαγωγή στην Αρχιτεκτονική -Ι

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

8.1 Θεωρητική εισαγωγή

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Μέρος Β (Οργάνωση Υπολογιστών)

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 3

Τετάρτη 5-12/11/2014. ΣΗΜΕΙΩΣΕΙΣ 3 ου και 4 ου ΜΑΘΗΜΑΤΟΣ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΡΧΙΤΕΚΤΟΝΙΚΗ Η/Υ Α ΕΞΑΜΗΝΟ

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32. Αρχείο καταχωρητών και Χάρτης Μνήµης

Εισαγωγή στην επιστήµη των υπολογιστών. Πράξεις µε µπιτ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Κεφάλαιο 5. Στόχοι Κεφαλάιου. Η αρχιτεκτονική von Neumann. Nell Dale John Lewis. Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ/CPU)

Τα µπιτ και η σηµασία τους. Σχήµα bit. ΚΕΦΑΛΑΙΟ 1: Αποθήκευση εδοµένων (1/2) 1.7 Αποθήκευση κλασµάτων 1.8 Συµπίεση δεδοµένων 1.9 Σφάλµατα επικοινωνίας

Εισαγωγή στην επιστήµη των υπολογιστών. Πράξεις µε µπιτ

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Εισαγωγή στον Προγραμματισμό

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης

ΠΛΗ10 Κεφάλαιο 2. ΠΛΗ10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή

Περιεχόμενο: Δομή υπολογιστή Συστήματα αρίθμησης

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 3. Αριθµητική για υπολογιστές

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

Οργάνωση Η/Υ. Γλώσσα Assembly. Τμήμα Εφαρμσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Αρχιτεκτονικη υπολογιστων

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

9. ΚΑΤΑΧΩΡΗΤΕΣ (REGISTERS)

3. Πρόσθεση Πολλαπλασιασμός 4. Πρόσθεση στο πρότυπο ΙΕΕΕ Πολλαπλασιασμός στο πρότυπο ΙΕΕΕ

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

Εργαστήριο ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ. Εισαγωγή

ΕΡΓΑΣΤΗΡΙΟ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ

Εισαγωγή στην επιστήµη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 5ο Οργάνωση υπολογιστών

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

Δομή Ηλεκτρονικού υπολογιστή

Εργαστήριο ΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Εισαγωγή στην επιστήμη των υπολογιστών. Πράξεις με μπιτ

ΟΙ ΒΑΣΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Οργάνωση Υπολογιστών (Ι)

Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής. Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 3 ο ΜΕΔ απλού κύκλου

1 η Θεµατική Ενότητα : Δυαδικά Συστήµατα

Αρχιτεκτονική Υπολογιστών

Σύστημα Πλεονάσματος. Αναπαράσταση Πραγματικών Αριθμών. Αριθμητικές Πράξεις σε Αριθμούς Κινητής Υποδιαστολής

ΟΜΑΔΕΣ ΕΝΤΟΛΩΝ: ΙΔΙΟΤΗΤΕΣ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

5.1 Θεωρητική εισαγωγή

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 4 ο ΟΡΓΑΝΩΣΗ ΤΗΣ ΜΝΗΜΗΣ ΠΕΡΙΦΕΡΕΙΑΚΗ ΜΝΗΜΗ

Transcript:

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

Η πλήρης διαδικασία της πρόσθεσης δυο τιµών αποθηκευµένων στην κύρια µνήµη µπορεί να διασπασθεί σε πέντε βήµατα: Βήµα 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 ήταν απλώς ο πρώτος που δηµοσίευσε έρευνα που ανέφερε αυτήν την ιδέα και έτσι η παράδοση των υπολογιστών τον επέλεξε σαν τον επινοητή.

οντότητες: Τα δεδοµένα αποθηκεύονταν στην µνήµη ενώ το προγράµµατα ήταν µέρος της µονάδας έλεγχου. 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 που "πέφτουν από την άκρη" του καταχωρητή απλώς απορρίπτονται (ολίσθηση) ή χρησιµοποιούνται για να γεµίσουν τις τρύπες στην άλλη άκρη του καταχωρητή (περιστροφή).

Έλεγχος Η οµάδα ελέγχου αποτελείται από τις εντολές που κατευθύνουν την εκτέλεση του προγράµµατος παρά τον χειρισµό των δεδοµένων. Το βήµα 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 Μονάδα ελέγχου Κύρια µνήµη Διευθύνσεις 00 Κελιά 1 2 Μετρητής Προγράµµατος Δίαυλος 01 02 Καταχωρητής οδηγίας 03 F FF Σχήµα 2.4 : Η αρχιτεκτονική µιας µηχανής-παράδειγµα Η κωδικοποιηµένη µορφή µιας εντολής µηχανής τυπικά αποτελείται από δυο µέρη:

το πεδίο κώδικα λειτουργίας (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

jmp XY F RXY jmple PC:=XY, if R RO R<=RO,XY 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 τα οποία αναπαριστούν τιµές κωδικοποιηµένες σε µορφή

συµπληρώµατος ως προς 2 απαιτεί διαφορετικές δραστηριότητες της αριθµητικής/λογικής µονάδας από ότι η πρόσθεση αριθµών κινητής υποδιαστολής. Κλείνουµε αυτήν την ενότητα µε το Σχήµα 2.7 το οποίο περιέχει µια κωδικοποιηµένη µορφή των εντολών του αλγόριθµου πρόσθεσης δύο αριθµών. Έχουµε θεωρήσει ότι οι τιµές που πρόκειται να προστεθούν είναι αποθηκευµένες σε µορφή συµπληρώµατος ως προς 2 στις διευθύνσεις µνήµης 6C και 6D και το άθροισµα πρόκειται να τοποθετηθεί στο κελί µνήµης 6Ε. Κωδικοποιηµένη Μορφή 156C 166D 5056 306E C000 Μετάφραση Φόρτωσε στον καταχωρητή 5 την ακολουθία bit που βρίσκεται στο κελί µνήµης στην διεύθυνση 6C. Φόρτωσε στον καταχωρητή 6 την ακολουθία bit που βρίσκεται στο κελί µνήµης στην διεύθυνση 6D. Πρόσθεσε τα περιεχόµενα των καταχωρητών 5 και 6 σαν αναπαραστάσεις συµπληρώµατος ως προς 2 και τοποθέτησε το αποτέλεσµα στον καταχωρητή 0. Αποθήκευσε τα περιεχόµενα του καταχωρητή 0 στο κελί µνήµης στην διεύθυνση 6Ε. Τέλος Σχήµα 2.7: Η κωδικοποιηµένη µορφή των εντολών του αλγορίθµου πρόσθεσης 2 ακεραίων 2.3 Εκτέλεση προγράµµατος Ο υπολογιστής ακολουθεί ένα πρόγραµµα αποθηκευµένο στη µνήµη του αντιγράφοντας τις εντολές από την µνήµη στην µονάδα ελέγχου. Όταν πια βρίσκονται στην µονάδα ελέγχου, κάθε εντολή αποκωδικοποιείται και εκτελείται. Η σειρά µε την οποία ανακαλούνται οι εντολές από την µνήµη αντιστοιχεί στην σειρά µε την οποία είναι αποθηκευµένες στην µνήµη εκτός και αν καθορίζεται αλλιώς από µια JUMP εντολή. Προκείµενου να κατανοήσουµε πως λαµβάνει χώρα η συνολική διαδικασία εκτέλεσης, είναι απαραίτητο να ρίξουµε µια πιο κοντινή µάτια στην µονάδα ελέγχου µέσα στη CPU. Μέσα σε αυτή τη µονάδα βρίσκονται δυο καταχωρητές ειδικής χρήσης: ο µετρητής προγράµµατος (program counter) που περιέχει την διεύθυνση της επόµενης εντολής που πρόκειται να εκτελεστεί, όποτε χρησιµεύει στην µηχανή για να παρακολουθεί που βρίσκεται στο πρόγραµµα, και ο καταχωρητής εντολής (instruction register) (βλέπε ξανά Σχήµα 2.4) που χρησιµοποιείται για να κρατά την εντολή η οποία εκτελείται. Η µονάδα ελέγχου εκτελεί την εργασία της επαναλαµβάνοντας συνεχώς έναν αλγόριθµο που την οδηγεί σε µια διαδικασία τριών βηµάτων που ονοµάζεται κύκλος µηχανής. Τα βήµατα στον κύκλο µηχανής είναι ανάκληση, αποκωδικοποίηση, εκτέλεση (Σχήµα 2.8). Κατά την διάρκεια του βήµατος ανάκλησης, η µονάδα έλεγχου απαιτεί η κύρια µνήµη να της προµηθεύσει την εντολή που είναι αποθηκευµένη στην διεύθυνση που υποδεικνύει ο µετρητής προγράµµατος της µονάδας έλεγχου. Εφόσον κάθε εντολή στη µηχανή µας έχει µήκος δυο bytes, η διαδικασία ανάκλησης απαιτεί την µεταφορά των περιεχοµένων δυο κελιών µνήµης από την κύρια µνήµη. Η µονάδα

ελέγχου τοποθετεί την εντολή που έλαβε από την µνήµη στον καταχωρητή εντολής και αυξάνει τον µετρητή προγράµµατος κατά δυο έτσι ώστε ο µετρητής να περιέχει την διεύθυνση της επόµενης εντολής, που είναι αποθηκευµένη στην µνήµη. Έτσι ο µετρητής προγράµµατος θα είναι έτοιµος να χρησιµοποιηθεί στην επόµενη ανάκληση. Ενώ η εντολή βρίσκεται στον καταχωρητή εντολής, η µονάδα ελέγχου προχωράει στην αποκωδικοποίηση κάτι το οποίο περιλαµβάνει τον διαχωρισµό του πεδίου τελεστή στα κανονικά του συστατικά βάσει του κώδικα λειτουργίας. Στη συνέχεια, στο βήµα εκτέλεσης, η µονάδα έλεγχου ενεργοποιεί το κατάλληλο κύκλωµα για να εκτελέσει την επιθυµητή λειτουργία. Για παράδειγµα αν η εντολή είναι µια φόρτωση από την µνήµη, η µονάδα έλεγχου προκαλεί την πραγµατοποίηση της. Αν η εντολή είναι για µια αριθµητική λειτουργία, η µονάδα ελέγχου ενεργοποιεί το κατάλληλο κύκλωµα στην αριθµητική/λογική µονάδα µε τους κατάλληλους καταχωρητές σαν εισόδους. Αποκωδικοποίηση 1. Ανάκληση της επόµενης εντολής απο την µνήµη (οπως καθορίζεται απο τον µετρητή προγράµµατος) και αύξηση του µετρητή προγράµµατος Ανάκληση 2. Aποκωδικοποίηση της ακολουθίας bit απο τον καταχωρητή εντολής Εκτέλεση 3. Εκτέλεση της λειτουργίας που καθοριζεται απο την οδηγια στον καταχωρητή εντολής Σχήµα 2.8: Φάσεις του κύκλου µηχανής Όταν η εντολή στον καταχωρητή εντολής έχει εκτελεστεί, η µονάδα ελέγχου ξεκινά πάλι τον κύκλο µηχανής µε το βήµα ανάκλησης. Παρατηρήστε ότι εφόσον ο µετρητής προγράµµατος είχε αυξηθεί στο τέλος της προηγούµενης ανάκλησης, παρέχει πάλι στην µονάδα ελέγχου την σωστή διεύθυνση. Μια, σε κάποιο βαθµό, ειδική περίπτωση είναι η εκτέλεση της εντολής JUMP. Αναλογιστείτε για παράδειγµα την εκτέλεση της εντολής Β258 (Σχήµα 2.9), που σηµαίνει "πήδα στην εντολή στην διεύθυνση 58 αν το περιεχόµενο του καταχωρητή 2 είναι ίδιο µε του καταχωρητή 0". Σε αυτή τη περίπτωση το βήµα εκτέλεσης του κύκλου µηχανής ξεκινάει µε την σύγκριση των καταχωρητών 2 και 0. Αν περιέχουν διαφορετικές ακολουθίες bit, το βήµα εκτέλεσης τερµατίζει και ξεκινάει ο επόµενος κύκλος µηχανής. Αν ωστόσο τα περιεχόµενα αυτών των καταχωρητών είναι ίσα η µηχανή τοποθετεί την τιµή 58 στον µετρητή προγράµµατος, όποτε η εντολή σε αυτή την διεύθυνση είναι η επόµενη που λαµβάνεται και εκτελείται.

Εντολή B 2 5 8 Κώδικας λειτουργίας Β σηµαίνει να αλλαχθεί η τιµή του µετρητή προγράµµατος αν το περιεχόµενο του υποδεδειγµένου καταχωρητή είναι το ίδιο µε αυτό του καταχωρητή 0 Αυτό το κοµµάτι του τελεστή ειναι η διέυθυνση η οποία θα καταχωρηθεί στον µετρητή προγράµµατος. Αυτό το κοµµάτι του τελεστή προσδιορίζει τον καταχωρητή ο οποίος θα συγκριθεί µε τον καταχωρητή 0. Σχήµα 2.9: Αποκωδικοποίηση της εντολής Β258 Σηµειώνουµε ότι αν η εντολή ήταν Β058 τότε η απόφαση για το αν ο µετρητής προγράµµατος θα έπρεπε να αλλάξει θα εξαρτόταν από το αν το περιεχόµενο του καταχωρητή 0 ισούται µε αυτό του καταχωρητή 0. Πρόκειται όµως για τον ίδιο καταχωρητή και άρα τα περιεχόµενα είναι ίδια. Με τον ίδιο τρόπο κάθε εντολή της µορφής Β0ΧΥ οδηγεί σε JUMP στην θέση µνήµης ΧΥ. Ένα Παράδειγµα Εκτέλεσης Προγράµµατος Ας ακολουθήσουµε τον κύκλο µηχανής που εφαρµόζεται για το πρόγραµµα που παρουσιάζεται στο Σχήµα 2.7, το οποίο ανακαλεί δυο τιµές από την κύρια µνήµη, υπολογίζει το άθροισµα τους και αποθηκεύει το αποτέλεσµα σε ένα κελί της κύριας µνήµης. Πρώτα πρέπει να αποθηκεύσουµε το πρόγραµµα κάπου στην µνήµη. Για το παράδειγµα µας υποθέτουµε ότι αποθηκεύεται σε διαδοχικές διευθύνσεις, ξεκινώντας από την διεύθυνση Α0 (δεκαεξαδικό). Με το πρόγραµµα αποθηκευµένο κατά αυτόν τον τρόπο µπορούµε να ξεκινήσουµε την εκτέλεση του προγράµµατος από την µηχανή τοποθετώντας την διεύθυνση (Α0) της πρώτης εντολής στον µετρητή προγράµµατος και ξεκινώντας την µηχανή (Σχήµα 2.10). Ο µετρητής προγράµµατος περιέχει την διέυθυνση της πρώτης εντολής Κεντρική µονάδα επεξεργασίας Κύρια µνήµη Καταχωρητές... 0 1 2 F Μετρητής Προγράµµατος Α0 Καταχωρητής εντολής Δίαυλος Διέυθυνση Α2 Α3 Α4 Α5 Α6 Α7 Α8 Α9 Κελιά Α0 15 Α1 6C 16 6D 50 56 30 6E C0 00 Το πρόγραµµα ειναι αποθηκευµένο στην µνήµη ξεκινώντας απο την διέυθυνση Α0 Σχήµα 2.10: Το πρόγραµµα του Σχήµατος 2.7 αποθηκευµένο στην κύρια µνήµη έτοιµο για εκτέλεση H µονάδα ελέγχου ξεκινάει το βήµα ανάκλησης του κύκλου µηχανής εξάγοντας την εντολή της θέσης Α0 και τοποθετώντας αυτήν την εντολή (156C) στον καταχωρητη εντολής της. (Σχήµα 2.11α).

Κεντρική µονάδα επεξεργασίας Κύρια µνήµη Μετρητής Προγράµµατος Α0 Καταχωρητής οδηγίας Δίαυλος Διέυθυνση Α0 Α1 Α2 Κελιά 15 6C 16 156C Α3 6D Σχήµα 2.11α: Εκτέλεση του βήµατος λήψης του κύκλου µηχανής: Στην αρχή του βήµατος η εντολή που αρχίζει από την διεύθυνση Α0 ανακαλείται από την µνήµη και τοποθετείται στον καταχωρητή εντολής. Προσέξτε ότι στην µηχανή - παράδειγµα όλες 3 οι εντολές έχουν µήκος 16 bit (δυο bytes). Έτσι η εντολή που πρέπει να ανακληθεί καταλαµβάνει τα κελιά µνήµης τόσο στην διεύθυνση Α0 όσο και στην Α1. Η µονάδα ελέγχου είναι σχεδιασµένη να λαµβάνει το γεγονός αυτό υπ όψιν και έτσι µεταφέρει τα περιεχόµενα και των δυο κελιών και τοποθετεί τις ακολουθίες bit που έχει λάβει στον καταχωρητή εντολών, ο οποίος έχει µήκος 16 bit. Η µονάδα ελέγχου τότε προσθέτει δυο στον µετρητή προγράµµατος ώστε αυτός ο καταχωρητής να περιέχει την διεύθυνση της επόµενης εντολής (Σχήµα 2.11β). Στο τέλος του βήµατος ανάκλησης του πρώτου κύκλου µηχανής, ο µετρητής προγράµµατος και ο καταχωρητής εντολής περιέχουν τα ακόλουθα δεδοµένα: Μετρητής Προγράµµατος: Α2 Καταχωρητης Εντολής: 156C Κεντρική µονάδα επεξεργασίας Κύρια µνήµη Μετρητής Προγράµµατος Α2 Καταχωρητής οδηγίας Δίαυλος Διέυθυνση Α0 Α1 Α2 Κελιά 15 6C 16 156C Α3 6D Σχήµα 2.11β: Εκτέλεση του βήµατος λήψης του κύκλου µηχανής: Στην συνεχεία ο µετρητής προγράµµατος αυξάνεται έτσι ώστε να υποδεικνύει την επόµενη εντολή. 3 Για λόγους απλούστευσης, η γλώσσα µηχανής του υπολογιστή-παράδειγµα χρησιµοποιεί ένα σταθερό µήκος (δυο bytes) για όλες τις εντολές. Έτσι για να φέρει µια εντολή η CPU πάντα ανακτά τα περιεχόµενα δυο διαδοχικών κελιών µνήµης και αυξάνει τον µετρητή προγράµµατος της κατά δυο. Στην πραγµατικότητα οι περισσότερες γλώσσες µηχανής χρησιµοποιούν εντολές διαφορετικών µήκων. Για παράδειγµα η σειρά Pentium έχει εντολές που ποικίλουν από εντολές ενός byte µέχρι εντολές πολλών bytes των οποίο το µήκος εξαρτάται από την ακριβή χρήση της εντολής. Οι CPU µε τέτοιες γλώσσες µηχανής καθορίζουν το µήκος της εισερχόµενης εντολής από τον κώδικα λειτουργίας της εντολής. Αυτό σηµαίνει ότι η CPU πρώτα λαµβάνει τον κώδικα λειτουργίας και αναλόγως µε την ακολουθία bit που λαµβάνει γνωρίζει ποσά ακόµα bytes να φέρει για να αποκτήσει την υπόλοιπη εντολή.

Στην συνεχεία η µονάδα ελέγχου αναλύει την εντολή στον καταχωρητή εντολής της και συµπεραίνει ότι πρέπει να φορτώσει στον καταχωρητή 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). Συνεπώς η µηχανή σταµατά Κατά τη διάρκεια του βήµατος εκτέλεσης του κύκλου µηχανής και το πρόγραµµα τερµατίζεται. Βλέπουµε λοιπόν ότι η εκτέλεση ενός προγράµµατος, αποθηκευµένου στη µνήµη, συνεπάγεται την ίδια διαδικασία που θα χρησιµοποιούσαµε και εµείς αν θα χρειαζόταν να ακολουθήσουµε µια λεπτοµερή λίστα εντολών. Ενώ εµείς θα παρακολουθούσαµε τη θέση µας διαγράφοντας τις εντολές καθώς τις εκτελούµε ο υπολογιστής παρακολουθεί τη θέση του χρησιµοποιώντας τον µετρητή προγράµµατος. Αφού θα καθορίζαµε ποια εντολή πρέπει να εκτελέσουµε στη συνεχεία, θα την διαβάζαµε και θα εξάγαµε το νόηµα της. Μετά θα την εκτελούσαµε και θα επιστρέφαµε στη λίστα για την επόµενη εντολή µε τον ίδιο τρόπο µε τον οποίο η µηχανή εκτελεί την εντολή που βρίσκεται στον καταχωρητή εντολής και συνεχίζει λαµβάνοντας την επόµενη εντολή. Προγράµµατα και Δεδοµένα Πολλά προγράµµατα µπορούν να αποθηκευθούν ταυτόχρονα στην κύρια µνήµη του υπολογιστή εφόσον καταλαµβάνουν διαφορετικές θέσεις. Το ποιο πρόγραµµα θα

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