Αρχιτεκτονική και Λειτουργία Υπολογιστικών Συστηµάτων Συστατικά Μέρη των Η/Υ Ανάλυση των επιμέρους τμημάτων των Η/Υ Η Κεντρική Μονάδα Επεξεργασίας Η Αριθμητική & Λογική Μονάδα Η Μονάδα Ελέγχου Οι Εσωτερικοί Δίαυλοι Οι Καταχωρητές Η Κυρία ή Κεντρική Μνήμη Οι μονάδες Εισόδου/Εξόδου Η αρχή του αποθηκευμένου προγράμματος Η Γλώσσα Μηχανής Ομάδες Εντολών Μία Γλώσσα Μηχανής Παράδειγμα Ο κύκλος μηχανής 1
Συστατικά Μέρη των Η/Υ Κύρια Μνήμη (Main Memory) Μονάδες Εισόδου (Input Units) Μονάδες Εξόδου (Output Units) Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit - CPU ) Δίαυλοι Επικοινωνίας (Bus) Μονάδες Αποθήκευσης (Storage Devices) Περιφερειακές Συσκευές (Peripheral Devices) 5/13/16 Κ.Κυριακόπουλος 2
Κεντρική Μονάδα Επεξεργασίας ΚΜΕ (Central Processing Unit CPU) Επεξεργάζεται δεδομένα βάσει του προγράμματος Είναι το βασικότερο μέλος του Η/Υ Εμπεριέχει τα εξής υποσυστήματα: CPU Main Memory Input Units Output Units Αριθμητική & λογική μονάδα : εκτελεί τις αριθμητικές & λογικές πράξεις. Καταχωρητές : μονάδες αποθήκευσης που συνήθως έχουν μήκος είτε ένα byte είτε όσο το μήκος λέξης του Η/Υ και στις οποίες φυλάσσονται τα δεδομένα και τα αποτελέσματα των λογικών πράξεων. Μονάδα ελέγχου : έχει σκοπό τον συντονισμό και έλεγχο όλων των ενεργειών της CPU και, σε προέκταση, του Η/Υ. Παίρνει από την μνήμη μία προς μία όλες τις εντολές του προγράμματος, τις αναλύει σε στοιχειώδεις εργασίες και στέλνει σε διάφορες μονάδες λεπτομερείς οδηγίες για το ποια λειτουργία πρέπει να εκτελέσουν και πότε. Αυτό το μοντέλο λειτουργίας ονομάζεται «μηχανή Von Neumann» προς τιμή του γνωστού θεμελιωτή της επιστήμης και τεχνολογίας Η/Υ, που το πρότεινε το 1947. Storage Devices 3
Κυρία Μνήµη (Main Memory) -Περιφερειακές Συσκευές (Peripheral Devices) Κυρία Μνήμη : Χρησιμεύει για την, όσο είναι ο υπολογιστής σε λειτουργία, αποθήκευση των δεδομένων εισόδου & εξόδου και των εντολών του προγράμματος. Main Memory Input Units Output Units CPU Περιφερειακές Συσκευές : Είναι το σύνολο των συσκευών που επιτρέπουν την επικοινωνία του Η/Υ με το εξωτερικό περιβάλλον καθώς επίσης και οι μονάδες μόνιμης αποθήκευσης. Storage Devices) 4
Δίαυλοι Επικοινωνίας - Bus Είναι συνήθως ελεγχόμενοι από την CPU και εξυπηρετούν την (ψηφιακή δηλ. την μέσω παλμών τύπου 0 ή 1) επικοινωνία μεταξύ της CPU και των υπολοίπων συστημάτων. Κάθε δίαυλος είναι μία δέσμη αγωγών, κάθε ένας από του οποίους μεταφέρει παλμούς. Τα 3 είδη BUS αντιστοιχούν σε «Υποδέσμες» αγωγών του BUS και είναι τα εξής: DATA BUS - Δίαυλος δεδομένων: χρησιμοποιείται για την μεταφορά δεδομένων (π.χ. προγράμματα και δεδομένα) από και προς τη CPU, τη μνήμη και τα περιφερειακά. ADDRESS BUS Δίαυλος διευθύνσεων: καθορίζει ανά πάσα στιγμή σε ποία διεύθυνση της μνήμης ή σε ποιο από τα περιφερειακά θα γίνει η απαγωγή ή η προσαγωγή δεδομένων. CONTROL BUS - Δίαυλος ελέγχου: χρησιμοποιείται για να στέλνει η CPU σήματα ελέγχου (εντολές) προς τα άλλα τμήματα με σκοπό την εκτέλεση άλλων ενεργειών (καθορίζει το τι θα γίνει, π.χ. ανάγνωση, εγγραφή κλπ.). Τα bus μπορεί να είναι είτε τρία (3) ξεχωριστά είτε ολιγότερα (π.χ. υπάρχει ενιαίο data+address bus) χωρίς να αποκλείονται και συστήματα όπου ένας μοναδικός δίαυλος υλοποιεί και τις τρεις λειτουργίες με «κατάτμηση» χρόνου (pme sharing). Main Memory Input Units Output Units CPU Storage Devices) 5
Κεντρική Μονάδα Επεξεργασίας ΚΜΕ (Central Processing Unit CPU) Επεξεργάζεται δεδομένα βάσει προγράμματος Είναι το βασικότερο μέλος του Η/Υ Εμπεριέχει τα εξής υποσυστήματα: Αριθμητική & λογική μονάδα Καταχωρητές Μονάδα ελέγχου CPU Registers Address Bus CLOCK Control Unit Internal Bus Data Bus Arithmetic & Logic Unit Control Bus 6
Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit CPU) Βασικές λειτουργίες της CPU : Συντονισμός μεταφοράς πληροφοριών από ή προς την κυρία μνήμη (μέσω data bus) από τις μονάδες εισόδου ή προς μονάδες εξόδου CLOCK Αριθμητικές & λογικές πράξεις: πράξεις μεταξύ δεδομένων, τα οποία ανακαλούνται από την κύρια μνήμη ή / και τις μονάδες εισόδου. Τα αποτελέσματα τοποθετούνται στην κύρια μνήμη ή στις μονάδες εξόδου. CPU Control Unit Arithmetic & Logic Unit Registers Address Bus Data Bus Control Bus Έλεγχος των μονάδων του Η/Υ: ü επιτελεί αποστολή σημάτων (μέσω control bus) προς τις διάφορες μονάδες του Η/Υ ü δέχεται λήψη σημάτων (interrupts) από τις διάφορες μονάδες του Η/Υ (Αυτό συνεπάγεται διακοπή της εκτέλεσης της λειτουργίας που εκτελείται από την CPU, με σκοπό την εξυπηρέτηση της «διακόπτουσας» μονάδας. Μετά από την εξυπηρέτηση συνεχίζεται η εκτέλεση του αρχικού διακεκομμένου προγράμματος) Internal Bus 7
CPU: Εσωτερικοί Δίαυλοι (Internal bus) CLOCK CPU Control Unit Internal Bus Registers Κύρια Μνήμη (Main Memory) Μονάδες Εισόδου (Input Units) Address+Control+Data Bus Μονάδες Εξόδου (Output Units) Arithmetic & Logic Unit Μονάδες Αποθήκευσης (Storage Devices) Εσωτερικοί Δίαυλοι (Internal buses): Χρησιμοποιούνται για την αποστολή σημάτων χρονισμού και εκτέλεσης εντολών από τη CU και για την μεταφορά δεδομένων μεταξύ των καταχωρητών. 8
Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit CPU) CPU Registers Address Bus CLOCK Control Unit Internal Bus Data Bus Arithmetic & Logic Unit Control Bus 9
CPU: CU (Control Unit - µονάδα ελέγχου) Συντονίζει τις εργασίες της CPU και κατ επέκταση όλου του Η/Υ: Παίρνει από την μνήμη μία προς μία όλες τις εντολές του προγράμματος, τις αναλύει σε στοιχειώδεις εργασίες και στέλνει στις διάφορες μονάδες βήμα προς βήμα εντολές έτσι ώστε ο Η/Υ να διεκπεραιώνει κάθε μία εντολή προγράμματος. Η CU εποπτεύει αναφορικά με τα δεδομένα εντός του H/Y: είσοδο/ έξοδο, όσο και επεξεργασία & μεταφορά. Δρα σαν χρονιστής, ρυθμίζοντας το συγχρονισμό του Η/Υ. 10
CPU: ALU (Arithmetic Logical Unit - αριθµητική και λογική µονάδα) Αποτελείται από: λογικά κυκλώματα: που εκτελούν τις αριθμητικές & λογικές πράξεις που υποδεικνύονται από τη μονάδα ελέγχου βάσει της εκτελούμενης εντολής προγράμματος καθώς επίσης και διάφορες βοηθητικές εργασίες που απαιτούνται, και καταχωρητές: δηλ. θέσεις προσωρινής αποθήκευσης αποτελεσμάτων όπως: καταχωρητής δεδομένων επεξεργασίας (data processing register), συσσωρευτής (accumulator), και καταχωρητής κατάστασης (status register). Κάθε bit αυτού του καταχωρητή δίνει πληροφορίες για την τρέχουσα «κατάσταση» ένεκα της τελευταίας πράξης που έγινε. Εξωτερικός Δίαυλος Διευθύνσεων & Δεδοµένων Καταχωρητής Δεδοµένων Επεξεργασίας Λογικά Κυκλώµατα Αριθµητικών & Λογικών Πράξεων Συσσωρευτής Εσωτερικός Δίαυλος Διευθύνσεων & Δεδοµένων Καταχωρητής Κατάστασης 11
CPU: Registers (καταχωρητές) Τι είναι? Είναι προσωρινές και ταχύτατες θέσεις αποθήκευσης. Είναι, δηλαδή, ομάδες FLIP- FLOP τα οποία ευρίσκονται εντός της CPU, «δίπλα» είτε στην ALU είτε στην CU. Εύρος : περίπου όσο το μήκος λέξης (wordlength) όμως μερικά από αυτά έχουν μικρότερο (π.χ. τα status registers). Χρησιμότητα : έγκειται στο πολύ μικρό access- pme που έχουν σε σύγκριση με την ΚΜ και έτσι, χρησιμοποιούνται για να αποθηκεύουν πληροφορίες που πρόκειται να χρησιμοποιηθούν άμεσα, ώστε να χρειαζόμαστε μικρότερο χρόνο επεξεργασίας, δηλαδή: δεδομένα προς επεξεργασία δεδομένα από επεξεργασία εντολές προγράμματος διευθύνσεις Αριθμός : συνήθως 8-16 ανά CPU, αλλά σε συγκεκριμένες CPU φτάνει και τους 100. Όλοι οι registers είναι readable από το πρόγραμμα ενώ σχεδόν όλοι είναι writable (π.χ. το status register δεν είναι). 5/13/16 Κ.Κυριακόπουλος 12
Χαρακτηριστικά της ΚΜΕ και «επεξεργαστική ισχύς» Συχνότητα (frequency): πλήθος βασικών πράξεων που μπορεί να εκτελέσει η Κ.Μ.Ε. ανά μονάδα χρόνου (sec). Μετράται σε ΜΗz (1 MHz = 1 κύκλος / sec). Τυπικές συχνότητες συνήθων μικροϋπολογιστών από 1MHz ~ 8 GHz Wordlength (ψηφιολέξη): μέγεθος της πληροφορίας που επεξεργάζεται η ΚΜΕ ανά βήμα «εκτέλεσης». Aν είναι η ψηφιολέξη σχετικά μικρή και δεν επαρκεί για να χωρέσει / διαχειρισθεί τα δεδομένα για την ζητούμενη ακρίβεια (δηλ. χρειαζόμαστε πολλά bytes), τότε η ΚΜΕ χρειάζεται ενδιάμεσα βήματα για αποθηκεύσει τα δεδομένα. Data Bus Width: Καθορίζει, για δεδομένο wordlength, σε πόσες φάσεις το word θα μεταφερθεί από και προς την KME. Address bus width: Καθορίζει τον μέγιστο (addressable) χώρο διευθυνσιοδότησης της ΚΜΕ. Σε περίπτωση που αυτός γεμίσει, χρησιμοποιείται η περιφερειακή μνήμη. 13
Χαρακτηριστικά της οικογένειας CPU της ΙΝΤEL CPU Έτος Συχνότητα (ΜΗz) Wordlength (bit) Data Bus (bit) Max MM Τύπος IBM- PC Σχόλια 4004 1971 1-4 4 4 1ΚΒ - Η πρώτη CPU 8086 1979 4-10 16 16 1MB PC ~29K transistors 8088 1980 4-10 16 8 1MB PC/XT Λόγω Data Bus: 30% πιο αργή, αλλά πιο φθηνά περιφερειακά 80286 1982 12-20 16 16 16ΜΒ ΑΤ ~134Κ transistors 80386 1985 25-33 32 32 4GB PS 1,2 80386SX 1985 16-25 32 16 16MB PS 1,2 ~275K transistors 80486 1989 25-100 32 32 16GB Pentium 1993 75-180 64 32 16GB ~1.2M trans., Εµπεριέχει FPU & Cache Memory (~128KB) ~3.1M transistors, 2 ALUs 14
Κύρια ή Κεντρική Μνήµη (Main Memory MM) Σκοπός: τοποθέτηση, αποθήκευση και ανάκληση δυαδικών πληροφοριών που είναι : Το πρόγραμμα (program), δηλαδή το σύνολο των προς εκτέλεση εντολών, και Τα δεδομένα (data) που είναι, είτε: δεδομένα εισόδου (input data) που χρειάζονται για την επίλυση που παρέχει ο κωδικοποιημένος σε πρόγραμμα αλγόριθμος, είτε δεδομένα εξόδου (output data) που προήλθαν από επεξεργασία δεδομένων εισόδου. Έστω η πράξη: 3+2. Εντολή προγραμματισμού είναι η πρόσθεση ( + ) ενώ δεδομένα εισόδου είναι οι αριθμοί (3,2). Τόσο η εντολή όσο και τα δεδομένα εισόδου κωδικοποιούνται ως αλληλουχίες bit, αποθηκευμένες στην κεντρική μνήμη. Όταν η CPU εκτελέσει την πράξη και βγάλει το αποτέλεσμα (5) θα το αποθηκεύσει και αυτό σε κωδικοποιημένη μορφή στην κεντρική μνήμη ως δεδομένο εξόδου. Μονάδα μέτρησης χωρητικότητας της κεντρικής μνήμης είναι το 1 byte (=8 bit). Για τα πολλαπλάσια του byte ισχύει: 1 KB = 2 10 B = 1024 B 1 MB = 2 10 KB = 1024 KB = 2 20 B= 1.048.576 B 1 GB=2 10 MB=1024 MB=2 20 KB=1.048.576 KB=2 30 B=1.073.741.824 B 1 TB = 2 10 GB = 2 20 MB = 2 30 KB = 2 40 B 15
Πρόβληµα Σε µία διάταξη συλλογής δεδοµένων από µία αποµακρυσµένη βιοµηχανική διεργασία χρησιµοποιείται ένας αναλογοψηφιακός µετατροπέας (ADC) που δέχεται σήµατα µετρήσεων από αισθητήρες µε µορφή τάσης. Κάθε µέτρηση έχει τιµή από -5 έως 5 volts και ο ADC τα µετατρέπει µε συχνότητα δειγµατοληψίας 10 khz σε κωδικοποιηµένη µορφή µήκους 2 byte από την οποία το 1 bit χρησιµοποιείται σαν ψηφίο ισοτιµίας. Να ευρεθεί η διακριτότητα της αναλογοψηφιακής µετατροπής Να ευρεθεί σε τι εύρος χρόνου µπορούν να αποθηκευθούν µετρήσεις σε ένα USB-stick του 1 GB 2 Byte = 16 bit Αν απο τα 16 bit κάθε δείγµατος, χρησιµοποιήσουµε 1 bit ως parity bit, τότε θα έχουµε 15 bit διαθέσιµα και ο αριθµός των διαθεσίµων καταστάσεων είναι 2 15-1. Δεδοµένου του ευρους των µετρήσεων [-5 V, +5V], δηλαδή 10 V, η διακριτότητα ειναι q = 10 / (2 15-1) 0.3 mv / step H αποθηκευτική ικανότητα του USB stick είναι 1 GB = 2 30 Byte = 2 3 2 30 bit = 2 33 bit. Δεδομένης της συχνότητας της δειγµατοληψίας (10 4 Hz) και των αριθµών bit που χρειάζονται για κάθε µέτρηση (15), απαιτούνται 15 10 4 bps. bps bits/sec Επομένως ο μέγιστος χρόνος αποθήκευσης είναι 5/13/16 2 33 / (15 10 4 ) sec = 57266 sec =15h 54m 26s. 16
Οργάνωση της µνήµης Η ΚΜ είναι οργανωμένη ανά byte. Σε κάθε byte μνήμης αντιστοιχεί μια μοναδική διεύθυνση που περιγράφεται σε δυαδική μορφή. Ο αριθμός των bit που χρησιμοποιείται για να περιγραφεί η διεύθυνση του κάθε byte μνήμης εξαρτάται από το chip της CPU και είναι ίσος με το εύρος του διαύλου διευθύνσεων. Για ένα δίαυλο διευθύνσεων m bit, ο μέγιστος αριθμός byte της κυρίας μνήμης που μπορεί να προσπελάσει η CPU είναι 2 m με διευθύνσεις που εκτείνονται από 0 έως 2 m - 1 Σε κάθε συνδυασμό του διαύλου διευθύνσεων αντιστοιχεί μία και μόνο θέση στον χώρο μνήμης π.χ. στο διπλανό σχήμα, ο δίαυλος διευθύνσεων είναι 4 bit, οπότε αν το address bus είναι 0010 τότε πρέπει να ενεργοποιηθεί το byte της μνήμης που έχει διεύθυνση 0010 2 =2 10 και μόνο αυτό. Αυτή η αντιστοίχιση επιτυγχάνεται μέσω ενός αποκωδικοποιητή 7 6 5 4 3 2 1 0 0000 2 0 0001 2 1 0010 2 1 0 0 0 1 1 1 0 2 0011 2 3 0100 2 4 0101 2 5 0110 2 6 1111 2 15 Περιεχόµενο συγκεκριµένου Byte 1 Byte μνήμης διευθύνσεων. Με αυτόν τον τρόπο είναι δυνατή η προσπέλαση οιασδήποτε διεύθυνσης στην μνήμη. Από αυτήν ακριβώς την ικανότητα προκύπτει η ονομασία RAM (Random Access Memory). Διευθύνσεις Θέσεων Μνήμης 17
Χαρακτηριστικά της µνήµης Ταχύτητα προσπέλασης (Τ a ) : Ο χρόνος (1 μsec 30 nsec) που χρειάζεται για R/W (read or write) σε οποιαδήποτε διεύθυνση της μνήμης. Μέγεθος: Η χωρητικότητα σε bytes της μνήμης. Στα PC είναι περίπου της τάξης του 1-16 GB. Μονιμότητα αποθήκευσης: Ανάλογα με την μονιμότητα αποθήκευσης διακρίνονται δύο είδη κεντρικής μνήμης: η RAM και η ROM. RAM: R/W κατά βούληση και ταχέως. Τα δεδομένα όμως χάνονται με την απώλεια της τροφοδοσίας και για αυτόν τον λόγο η RAM χρησιμοποιείται κυρίως για αποθήκευση προσωρινών δεδομένων και εντολών. Υπάρχουν 2 τύποι RAM : Δυναμική (DRAM): πρέπει να αναζωογονείται ηλεκτρικά ~10 3 φορές/sec αλλιώς χάνονται δεδομένα. Μεγάλη αποθηκευτική ικανότητα και Τ a =60 70 nsec. DRAM είναι η κλασική μνήμη RAM του Η/Υ Στατική (SRAM): απλή κατασκευαστικά. Δεν παρουσιάζει διαρροή δεδομένων αν υπάρχει μικρή ισχύς. Τ a 10 nsec. SRAM είναι η μνήμη cache. ROM (Read Only Memory): αποθηκεύει, αναγνώσιμα αλλά μη επανεγγράψιμα, στοιχεία δηλαδή εντολές και δεδομένα τα οποία είναι μόνιμα δηλαδή ανεξάρτητα από την τροφοδοσία σε ρεύμα. Επομένως είναι κατάλληλη για αποθήκευση βασικών πληροφοριών (π.χ. BIOS: το πρόγραμμα που κάνει τον υπολογιστή να ξεκινάει). Υπάρχουν τρία είδη ROM: PROM (Programmable ROM): προγραμματίζεται με ειδικές συσκευές (με χρήση υπεριώδους ακτινοβολίας) και δεν μπορούμε να την επαναπρογραμματίσουμε. EPROM (Electrically PROM): απλοποίηση της PROM για την οποία υπάρχουν ειδικές συσκευές με τις οποίες μπορούμε να τις προγραμματίσουμε ηλεκτρικά αλλά δεν μπορούμε να σβήσουμε τα δεδομένα ούτε να κάνουμε επαναπρογραμματισμό. EEPROM (Electrically Erasable PROM): δίνει την δυνατότητα να σβήνουμε τα δεδομένα της και να την επαναπρογραμματίζουμε 18
Είδη Μνηµών-Η Ιεραρχία της Μνήµης Καταχωρητές (Registers): βρίσκόνται στο εσωτερικό της Κ.Μ.Ε. είναι πολύ ταχύ είδος μνήμης έχουν μικρές αποθηκευτικές δυνατότητες Λανθάνουσα ή Κρυφή Μνήμη (Cache memory): internal cache memory (εσωτερική) βρίσκεται στο εσωτερικό της Κ.Μ.Ε. κατασκευάζεται από SRAM (stapc RAM) μικρές αποθηκευτικές δυνατότητες είναι ταχεία external cache memory (εξωτερική) κατασκευάζεται από SRAM (stapc RAM) μικρές αποθηκευτικές δυνατότητες είναι ταχεία Κυρία Μνήμη (Main memory): κατασκευάζεται από DRAM (dynamic RAM) ικανοποιητικές αποθηκευτικές δυνατότητες αρκετά ταχεία (Τ α =50 70 ns) Registers Cache Memory Main Memory Peripheral Memory Περιφερειακή ή Δευτερεύουσα Μνήμη (Peripheral or Secondary memory): μεγάλες αποθηκευτικές δυνατότητες σχετικά αργή (ένας σκληρός δίσκος, έχει access pme της τάξεως των 5+ ms) Ταχύτητα Αποθηκευτική Δυνατότητα 19
20 Μονάδες Εισόδου / Εξόδου (Input / Output Unit) Σε αυτή την μονάδα συνδέονται οι διάφορες περιφερειακές συσκευές (π.χ. πληκτρολόγιο, εκτυπωτής) επιτρέποντας έτσι την επικοινωνία του Η/Υ με τον εξωτερικό κόσμο. Διαθέτει τους εξής καταχωρητές: διευθύνσεων συσκευών: καθορίζει τη διεύθυνση της περιφερειακής συσκευής με την οποία συναλλάσσονται. Το εύρος του καθορίζει τον αριθμό των περιφερειακών συσκευών που μπορεί να χειρισθεί η μονάδα και είναι χαρακτηριστικό για την μονάδα, και δεδομένων εισόδου και δεδομένων εξόδου: προσωρινά αποθηκεύουν τα δεδομένα από και προς τις περιφερειακές συσκευές και το εύρος τους είναι ίσο είτε με το μήκος λέξης του Η/Υ είτε με το εύρος του data bus, Οι καταχωρητές του συστήματος εισόδου / εξόδου δρουν κατά τρόπο παρόμοιο των αντίστοιχων καταχωρητών την κύριας μνήμης. Εξωτερικός Δίαυλος διευθύνσεων / δεδεµένων Καταχωρητής Διευθύνσεων Συσκευών Καταχωρητής Δεδοµένων Εισόδου Καταχωρητής Δεδοµένων Εξόδου
Aρχιτεκτονική Υπολογιστικού Συστήµατος CLOCK CPU Control Unit Internal Bus Registers Κύρια Μνήμη (Main Memory) Μονάδες Εισόδου (Input Units) Address+Control+Data Bus Μονάδες Εξόδου (Output Units) Arithmetic & Logic Unit Μονάδες Αποθήκευσης (Storage Devices) Καταχωρητής Δεδοµένων Εξόδου Εσωτερικός Δίαυλος Διευθύνσεων & Δεδοµένων Καταχωρητής Δεδοµένων Εισόδου Καταχωρητής Δεδοµένων Επεξεργασίας Λογικά Κυκλώµατα Αριθµητικών & Λογικών Πράξεων Συσσωρευτής Καταχωρητής Διευθύνσεων Μνήµης Αποκωδικοποιητής Διευθύνσεων Κυκλώµατα Μνήµης Καταχωρητής Δεδοµένων Μνήµης Καταχωρητής Διευθύνσεων Συσκευών Καταχωρητής Κατάστασης Μετρητής Προγράµµατος Καταχωρητής Διευθύνσεων Μνήµης Αποκωδικοποιητής Εντολών Σήµατα Ελέγχου Δείκτης Σωρού Καταχωρητής Δείκτη Εξωτερικός Δίαυλος διευθύνσεων / δεδεµένων Εξωτερικός Δίαυλος Διευθύνσεων & Δεδοµένων Εξωτερικός Δίαυλος διευθύνσεων / δεδεµένων Εξωτερικός Δίαυλος διευθύνσεων / δεδεµένων
Απλοποιηµένη αρχιτεκτονική ενός Υπολογιστικού Συστήµατος Η αρχή του αποθηκευμένου προγράμματος (stored- program concept): Τόσο το πρόγραμμα όσο και τα δεδομένα κωδικοποιούνται και αποθηκεύονται στην ΚΜ. Η CU είναι σχεδιασμένη να εξάγει το πρόγραμμα από την μνήμη, να αποκωδικοποιεί τις εντολές και να τις εκτελεί. Κεντρική µονάδα επεξεργασίας Αριθµητική/λογική µονάδα Καταχωρητές Μονάδα ελέγχου Δίαυλος Κύρια µνήµη Δηλαδή, το πρόγραμμα μπορεί να αλλάξει απλώς με την αλλαγή των περιεχομένων της μνήμης του υπολογιστή. Η αρχή του αποθηκευμένου προγράμματος έχει γίνει σήμερα τόσο συνήθης και δεδομένη που στην πραγματικότητα φαίνεται προφανής. Αυτό που την έκανε δύσκολη αρχικά ήταν το γεγονός ότι όλοι σκέφτονταν τα προγράμματα και τα δεδομένα σαν διαφορετικές οντότητες: Τα δεδομένα αποθηκεύονταν στην ΚΜ ενώ το προγράμματα ήταν μέρος της CU. 22
Τυπική Διαδικασία: Πρόσθεση Η πρόσθεση δυο τιμών αποθηκευμένων στην κύρια μνήμη συνεπάγεται περισσότερα από την απλή εκτέλεση της λειτουργίας της πρόσθεσης. Περιλαμβάνει τις συνδυασμένες προσπάθειες από την CU: επιτελεί τον συντονισμό μεταφοράς πληροφοριών μεταξύ της KM και των καταχωρητών μέσα στην CPU, και την ALU: επιτελεί την εκτέλεση της πρόσθεσης όταν δεχθεί την εντολή από την CU. Η πλήρης διαδικασία της πρόσθεσης δυο τιμών αποθηκευμένων στην κύρια μνήμη μπορεί να διασπαστεί σε πέντε βήματα: Βήμα 1: Ανάκληση μιας από τις τιμές που πρόκειται να προστεθούν και τοποθέτησή της σε έναν καταχωρητή. Βήμα 2: Ανάκληση της άλλης τιμή που πρόκειται να προστεθεί και τοποθέτησή της σε έναν άλλο καταχωρητή. Βήμα 3: Ενεργοποίηση του κυκλώματος πρόσθεσης με τους καταχωρητές των βημάτων 1 και 2 σαν δεδομένα και έναν άλλο καταχωρητή καθορισμένο για να δεχθεί το αποτέλεσμα. Βήμα 4: Αποθήκευση του αποτελέσματος στην μνήμη. Βήμα 5: Τέλος. 23
Γλώσσα Μηχανής Για να εφαρμοστεί η αρχή αποθηκευμένου προγράμματος, οι CPU σχεδιάζονται έτσι ώστε να αναγνωρίζουν εντολές (instruc ons) κωδικοποιημένες σαν ακολουθίες bit. Η ομάδα εντολών καθώς και το σύστημα κωδικοποίησης ονομάζονται γλώσσα μηχανής. Μια εντολή εκφρασμένη σε αυτή τη γλώσσα ονομάζεται εντολή επιπέδου μηχανής η πιο κοινά εντολή μηχανής. Οι εντολές μπορούν να ταξινομηθούν σε τρεις κατηγορίες: την ομάδα μεταφοράς δεδομένων, την αριθμητική/λογική ομάδα και την ομάδα ελέγχου. 24
Γλώσσα Μηχανής: Οµάδα Εντολών Μεταφοράς Δεδοµένων Εκτελούν μεταφορά δεδομένων από μια θέση σε μια άλλη. Τα βήματα 1, 2 και 4 στον αλγόριθμο πρόσθεσης δύο τιμών ανήκουν σε αυτή την κατηγορία. Η διαδικασία που λαμβάνει χώρα κατά τη μεταφορά δεδομένων μάλλον αντιγράφει δεδομένα παρά «μετακινεί». Βήμα 1: Ανάκληση μιας από τις τιμές που πρόκειται να προστεθούν και τοποθέτησή της σε έναν καταχωρητή. Βήμα 2: Ανάκληση της άλλης τιμή που πρόκειται να προστεθεί και τοποθέτησή της σε έναν άλλο καταχωρητή. Βήμα 3: Ενεργοποίηση του κυκλώματος πρόσθεσης με τους καταχωρητές των βημάτων 1 και 2 σαν δεδομένα και έναν άλλο καταχωρητή καθορισμένο για να δεχθεί το αποτέλεσμα. Βήμα 4: Αποθήκευση του αποτελέσματος στην μνήμη. Βήμα 5: Τέλος. 25
Γλώσσα Μηχανής: Οµάδα Εντολών Μεταφοράς Δεδοµένων συνεχ. Όροι που χρησιμοποιούνται για μεταφορά δεδομένων μεταξύ CPU και ΚΜ : Η απαίτηση να καταχωρηθούν σε ένα καταχωρητή γενικής χρήσης τα περιεχόμενα ενός κελιού μνήμης αναφέρεται κοινώς σαν εντολή φόρτωσης (LOAD). Η απαίτηση να μεταφερθούν τα δεδομένα ενός καταχωρητή σε ένα κελί μνήμης καλείται εντολή αποθήκευσης (STORE). Στον αλγόριθμο πρόσθεσης δύο τιμών, τα βήματα 1 και 2 είναι εντολές φόρτωσης (LOAD) ενώ το βήμα 4 είναι εντολή αποθήκευσης (STORE). Βήμα 1: Ανάκληση μιας από τις τιμές που πρόκειται να προστεθούν και τοποθέτησή της σε έναν καταχωρητή. Βήμα 2: Ανάκληση της άλλης τιμή που πρόκειται να προστεθεί και τοποθέτησή της σε έναν άλλο καταχωρητή. Βήμα 3: Ενεργοποίηση του κυκλώματος πρόσθεσης με τους καταχωρητές των βημάτων 1 και 2 σαν δεδομένα και έναν άλλο καταχωρητή καθορισμένο για να δεχθεί το αποτέλεσμα. Βήμα 4: Αποθήκευση του αποτελέσματος στην μνήμη. Βήμα 5: Τέλος. Μια σημαντική ομάδα εντολών εντός της κατηγόριας μεταφοράς αποτελείται από τις εντολές για επικοινωνία με συσκευές εκτός του περιβάλλοντος CPU- ΚΜ (δηλ. εκτυπωτές, πληκτρολόγια, οθόνες, disk drives, κλπ). Οι εντολές μεταχειρίζονται τις δραστηριότητες εισόδου/εξόδου (Ι/Ο) της μηχανής και για αυτό καλούνται εντολές Ι/Ο και θα τις θεωρήσουμε ως κομμάτι της ομάδας μεταφοράς δεδομένων. 26
Γλώσσα Μηχανής: Οµάδα Εντολών Αριθµητικής & Λογικής Εντολές που δίνουν εντολή στην CU να εκτελέσει μια δραστηριότητα μέσα στην ALU όπως: Αριθμητικές Πράξεις π.χ. το βήμα 3 στον αλγόριθμο πρόσθεσης δύο τιμών. Λογικές πράξεις τύπου AND, OR και XOR: λειτουργίες που χρησιμοποιούνται συχνά για τον χειρισμό μεμονωμένων bit εντός ενός καταχωρητή γενικής χρήσης χωρίς να διαταράσσεται το υπόλοιπο του καταχωρητή. Μια άλλη ομάδα λειτουργιών, διαθέσιμες στις περισσότερες αριθμητικές/λογικές μονάδες επιτρέπει την μετακίνηση των περιεχομένων του καταχωρητή προς τα δεξιά ή αριστερά. Αυτές οι λειτουργίες είναι γνωστές σαν Ολίσθηση (SHIFT): τα bit που "πέφτουν από την άκρη" του καταχωρητή απλώς απορρίπτονται (ολίσθηση), και Περιστροφή (ROTATE): τα bit που "πέφτουν από την άκρη" του καταχωρητή χρησιμοποιούνται για να γεμίσουν τις τρύπες στην άλλη άκρη του καταχωρητή. 27
Γλώσσα Μηχανής: Οµάδα Εντολών Ελέγχου Εντολές που κατευθύνουν την εκτέλεση του προγράμματος παρά τον χειρισμό των δεδομένων. Π.χ. Το βήμα 5 στο αλγόριθμο πρόσθεσης δύο τιμών. Οι εντολές JUMP ή BRANCH χρησιμοποιούνται για να κατευθύνουν την CU να εκτελέσει μια εντολή διαφορετική από αυτήν που βρίσκεται αμέσως μετά. Υπάρχουν δυο ειδών εντολές JUMP: JUMP χωρίς όρους (uncondi onal) π.χ. η εντολή "Πήδα στο βήμα 5", και JUMP υπό όρους (condi onal): καταλήγει σε "αλλαγή θέσης" μόνο αν πληρείται μια συγκεκριμένη συνθήκη π.χ. "Αν η τιμή που λάβεις είναι 0, τότε πήδα στο βήμα 5" Παράδειγμα: αλγόριθμος διαίρεσης δυο τιμών Βήμα 1: Φόρτωσε έναν καταχωρητή με μια τιμή από την μνήμη Βήμα 2: Φόρτωσε έναν δεύτερο καταχωρητή με άλλη τιμή από την μνήμη. Βήμα 3: Αν η δεύτερη τιμή είναι 0 πήδα στο Βήμα 6. Βήμα 4: Διαίρεσε το περιεχόμενο του πρώτου καταχωρητή με αυτό του δεύτερου και βάλε το αποτέλεσμα σε έναν τρίτο καταχωρητή. Βήμα 5: Αποθήκευσε το περιεχόμενο του τρίτου καταχωρητή στην μνήμη. Βήμα 6: Τέλος. 28
«Η/Υ-παράδειγµα» και «Γλώσσα Τόσο οι καταχωρητές όσο και οι θέσεις της ΚΜ έχουν εύρος 1 Byte δηλ. 8 bit. Η κωδικοποιημένη μορφή μιας εντολής μηχανής τυπικά αποτελείται από δυο μέρη: Μηχανής-Παράδειγµα» Αριθµητική/λογική µονάδα Κεντρική µονάδα επεξεργασίας Καταχωρητές 0 1 2 F Μονάδα ελέγχου Μετρητής Προγράµµατος Καταχωρητής οδηγίας Δίαυλος Κύρια µνήµη Διευθύνσεις η ακολουθία bit του πεδίου κώδικα λειτουργίας (op- code field) δηλώνει ποιες από τις στοιχειώδεις λειτουργίες (όπως π.χ. STORE, SHIFT, XOR και JUMP), απαιτούνται από την εντολή, 00 01 02 03 FF Κελιά η ακολουθία bit του πεδίου τελεστή (operand field)παρέχει πιο λεπτομερείς πληροφορίες για την λειτουργία που καθορίζεται από τον κώδικα λειτουργίας. Κώδικας Λειτουργίας Τελεστής 0011 0101 1010 0111 3 5 Α 7 Πραγµατικό bit pattern (16 bits) Δεκαεξαδική µορφή (4 ψηφια) 29
Ρεπερτόριο εντολών της µηχανήςπαράδειγµα Κώδικας Λειτουργ. Τελεστές Εντολή Λειτουργία 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 0RS load R,[S] register[r]:=memory[register[s]] E 0RS store R,[s] memory[register[s]]:=register[r] 4 0RS 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].. floating-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 R0X ror R,X register[r]:=register[r] ROR X...RΟtate Right register R for X times B RXY 0XY jmpeq R=R0,XY jmp XY PC:=XY, if R=R0 PC:=XY F RXY jmple R<=R0,XY PC:=XY, if R R0 C 000 halt halt program 30
Διεύθυ νση Περιεχ όµενο 00 1A 01 02 02 2B 03 02 04 9C 05 AB 06 3C 07 00 08 C0 09 00 Παραδείγµατα Να προστεθούν οι τιμές που είναι αποθηκευμένες στις διευθύνσεις μνήμης 6C και 6D και το άθροισμα πρόκειται να τοποθετηθεί στο κελί μνήμης 6Ε. Δίπλα φαίνονται τα περιεχόμενα των θέσεων μνήμης μεταξύ των διευθύνσεων (00) 16 έως (05) 16 στην «μηχανή παράδειγμα» που χρησιμοποιήθηκε στο μάθημα. Αν η μηχανή ξεκινήσει με τον μετρητή προγράμματος (Program Counter PC) στο (00) 16, να ευρεθούν όταν σταματήσει το πρόγραμμα: (α) το περιεχόμενο της θέσης μνήμης (45) 16 και (β) η τιμή του μετρητή προγράμματος Δίπλα φαίνονται τα περιεχόμενα των θέσεων μνήμης μεταξύ των διευθύνσεων (00) 16 έως (09) 16 στην «μηχανή παράδειγμα» που χρησιμοποιήθηκε στο μάθημα. Αν η μηχανή ξεκινήσει με τον μετρητή προγράμματος (Program Counter PC) στο (00) 16, να ευρεθούν όταν σταματήσει το πρόγραμμα: (α) το περιεχόμενο της θέσης μνήμης (00) 16 και (β) η τιμή του μετρητή προγράμματος Κ.Κυριακόπουλος Διεύθυ νση Περιεχ όµενο 00 10 01 04 02 30 03 45 04 C0 05 00 31
Η πρόσθεση µε Γλώσσα Μηχανής Θεωρούμε ότι οι τιμές που πρόκειται να προστεθούν είναι αποθηκευμένες σε μορφή συμπληρώματος ως προς 2 στις διευθύνσεις μνήμης 6C και 6D και το άθροισμα πρόκειται να τοποθετηθεί στο κελί μνήμης 6Ε. Βήµα Περιγραφή Κωδ. Μορφή Μετάφραση 1 Αν ά κ λ η σ η µ ι α ς τ ι µ ή ς κ α ι τοποθέτησή της σε έναν καταχωρητή 2 Ανάκληση της άλλης τιµής και Κώδικας Λειτουργ. τ ο π ο θ έ τ η σ ή τ η ς σ ε ά λ λ ο καταχωρητή. 3 Ενεργοποίηση πρόσθεσης µε τους καταχωρητές των βηµάτων 1 και 2 σαν δεδοµένα και έναν άλλο καταχωρητή για το αποτέλεσµα. 4 Αποθήκευση του αποτελέσµατος στην µνήµη. 156C 166D Τελεστές Εντολή Λειτουργία 5 Τέλος C000 Τέλος Φόρτωσε στον καταχωρητή 5, το περιεχόµενο (δηλ. τα bit που βρίσκονται) στην διεύθυνση 6C. Φόρτωσε στον καταχωρητή 6 το περιεχόµενο της διεύθυνσης 6D. 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 0RS load R,[S] register[r]:=memory[register[s]] E 0RS store R,[s] memory[register[s]]:=register[r] 4 0RS 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] 306E floating-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 R0X ror R,X register[r]:=register[r] ROR X...RΟtate Right register R for X times 5056 Πρόσθεσε τα περιεχόµενα των καταχωρητών 5 & 6 σαν αναπαραστάσεις συµπληρ. ως προς 2 και τοποθέτησε το αποτέλεσµα στον καταχωρητή 0. Αποθήκευσε τα περιεχόµενα του καταχωρητή 0 στην διεύθυνση 6Ε.
Εκτέλεση προγράµµατος Ο υπολογιστής ακολουθεί ένα πρόγραμμα αποθηκευμένο στη ΚΜ αντιγράφοντας τις εντολές από αυτή στην CU. Όταν κάθε εντολή έλθει στην CU, αυτή αποκωδικοποιείται και εκτελείται. Η σειρά με την οποία ανακαλούνται οι εντολές από την KM αντιστοιχεί στην σειρά με την οποία είναι αποθηκευμένες στην KM εκτός και αν καθορίζεται αλλιώς από μια JUMP εντολή. Προκείμενου να κατανοήσουμε πως λαμβάνει χώρα η συνολική διαδικασία εκτέλεσης, είναι απαραίτητο να ρίξουμε μια πιο κοντινή μάτια στην CU μέσα στη CPU. Μέσα σε αυτή τη μονάδα βρίσκονται δυο καταχωρητές ειδικής χρήσης : ο μετρητής προγράμματος (program counter - PC) που περιέχει την διεύθυνση της επόμενης εντολής που πρόκειται να εκτελεστεί, όποτε χρησιμεύει στην μηχανή για να παρακολουθεί που βρίσκεται στο πρόγραμμα, και ο καταχωρητής εντολής (instruc on register) που χρησιμοποιείται για να κρατά την εντολή η οποία εκτελείται. 33
Ο κύκλος µηχανής Η CU επαναλαμβάνει συνεχώς έναν αλγόριθμο που την οδηγεί σε μια διαδικασία τριών βημάτων που ονομάζεται κύκλος μηχανής: Ανάκληση: η CU απαιτεί να της προμηθεύσει η ΚΜ την εντολή που είναι αποθηκευμένη στην διεύθυνση που υποδεικνύει ο PC. Εφόσον κάθε εντολή στη μηχανή μας έχει μήκος 2 bytes, η διαδικασία ανάκλησης απαιτεί την μεταφορά των περιεχομένων 2 κελιών μνήμης από την KM. Η CU τοποθετεί την εντολή που έλαβε από την μνήμη στο IR και αυξάνει τον PC κατά 2 έτσι ώστε να περιέχει την διεύθυνση της επόμενης εντολής, που είναι αποθηκευμένη στην KM. Έτσι ο PC θα είναι έτοιμος να χρησιμοποιηθεί στην επόμενη ανάκληση. Αποκωδικοποίηση: Η εντολή που βρίσκεται στο IR υφίσταται διαχωρισμό του πεδίου τελεστή της στα κανονικά του συστατικά βάσει του κώδικα λειτουργίας Εκτέλεση: η CU ενεργοποιεί το κατάλληλο κύκλωμα για να εκτελέσει την επιθυμητή λειτουργία. Για παράδειγμα αν η εντολή είναι Ø φόρτωση από την KM, η CU προκαλεί την πραγματοποίηση της Ø αριθμητική λειτουργία, η CU ενεργοποιεί το κατάλληλο κύκλωμα στην ALU με τους κατάλληλους καταχωρητές σαν εισόδους. Ανάκληση Εκτέλεση Αποκωδικοποίηση 34
Ο κύκλος µηχανής συνεχ. Η εντολή JUMP: Η εντολή Β258 σημαίνει "πήδα στην εντολή στην διεύθυνση (58) 16 αν το περιεχόμενο του καταχωρητή 2 είναι ίδιο με του καταχωρητή 0". Σε αυτή τη περίπτωση το βήμα εκτέλεσης του κύκλου μηχανής ξεκινάει με την σύγκριση των καταχωρητών 2 και 0. Αν περιέχουν διαφορετικές ακολουθίες bit, το βήμα εκτέλεσης τερματίζει και ξεκινάει ο επόμενος κύκλος μηχανής. Αν ωστόσο τα περιεχόμενα αυτών των καταχωρητών είναι ίσα η μηχανή τοποθετεί την τιμή (58) 16 στον PC, όποτε η εντολή σε αυτή την διεύθυνση είναι η επόμενη που λαμβάνεται και εκτελείται. Σημειώνουμε ότι αν η εντολή ήταν Β058 τότε η απόφαση για το αν ο PC θα έπρεπε να αλλάξει θα εξαρτιόταν από το αν το περιεχόμενο του καταχωρητή 0 ισούται με αυτό του... καταχωρητή 0. Πρόκειται όμως για τον ίδιο καταχωρητή και άρα τα περιεχόμενα είναι ίδια. Με τον ίδιο τρόπο κάθε εντολή της μορφής Β0ΧΥ οδηγεί σε JUMP στην θέση μνήμης ΧΥ. Εντολή Κώδικας λειτουργίας Β σηµαίνει να αλλαχθεί η τιµή του µετρητή προγράµµατος αν το περιεχόµενο του υποδεδειγµένου καταχωρητή είναι το ίδιο µε αυτό του καταχωρητή 0 B 2 5 8 Αυτό το κοµµάτι του τελεστή προσδιορίζει τον καταχωρητή ο οποίος θα συγκριθεί µε τον καταχωρητή 0. Αυτό το κοµµάτι του τελεστή είναι η διεύθυνση η οποία θα καταχωρηθεί στον µετρητή προγράµµατος. 35
Παράδειγµα Εκτέλεσης Προγράµµατος: Άθροισµα 2 αριθµών Ο µετρητής προγράµµατος περιέχει την διέυθυνση της πρώτης εντολής Κεντρική µονάδα επεξεργασίας Κύρια µνήµη Καταχωρητές... 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 Κεντρική µονάδα επεξεργασίας Κύρια µνήµη 1 η Εντολή: H CU ξεκινάει το βήμα ανάκλησης του κύκλου μηχανής εξάγοντας την εντολή της θέσης Α0 και τοποθετώντας αυτήν την εντολή (156C) στον καταχωρητή εντολής της. Μετρητής Προγράµµατος Α0 Καταχωρητής Εντολής 156C Δίαυλος Διεύθυνση Α0 Α1 Α2 Α3 Κελιά 15 6C 16 6D 36
Παράδειγµα Εκτέλεσης Προγράµµατος: Άθροισµα 2 αριθµών: 1 η Εντολή συνεχ. Στην μηχανή - παράδειγμα όλες οι εντολές έχουν μήκος 2 bytes. Έτσι η εντολή που πρέπει να ανακληθεί καταλαμβάνει τα κελιά στις Α0 & Α1. Η CU έτσι μεταφέρει τα περιεχόμενα και των δυο κελιών και τοποθετεί τις ακολουθίες bit που έχει λάβει στο IR, που έχει μήκος 16 bit. Κεντρική µονάδα επεξεργασίας Μετρητής Προγράµµατος Α2 Καταχωρητής Εντολής 156C Δίαυλος Κύρια µνήµη Διεύθυνση Η CU τότε προσθέτει 2 στον PC ώστε αυτός να περιέχει την διεύθυνση της επόμενης εντολής. Στο τέλος του βήματος ανάκλησης του πρώτου κύκλου μηχανής, ο PC και ο IR περιέχουν τις τιμές που φαίνονται στο σχήμα. H CU αναλύει την εντολή που ευρίσκεται στο IR και συμπεραίνει ότι πρέπει να φορτώσει στον καταχωρητή 5 τα περιεχόμενα του κελιού της διεύθυνσης 6C. Αυτή η διαδικασία φόρτωσης εκτελείται κατά τη διάρκεια του βήματος εκτέλεσης του κύκλου μηχανής και τότε η CU ξεκινά τον επόμενο κύκλο. Α0 Α1 Α2 Α3 Κελιά 15 6C 16 6D 37
Παράδειγµα Εκτέλεσης Προγράµµατος: Άθροισµα 2 αριθµών: 2 η Εντολή Κεντρική µονάδα επεξεργασίας Κύρια µνήµη Μετρητής Προγράµµατος Διεύθυνση Κελιά Α4 Δίαυλος Α0 15 Α1 6C Καταχωρητής Εντολής Α2 16 166D Α3 6D 2 η Εντολή Αυτός ο κύκλος ξεκινά ανακαλώντας την εντολή 166D από τα δυο κελιά μνήμης αρχίζοντας από την διεύθυνση Α2. Η μονάδα ελέγχου τοποθετεί την εντολή στον καταχωρητή εντολής και αυξάνει τον μετρητή προγράμματος στο Α4. Οι τιμές στον μετρητή προγράμματος και στον καταχωρητή εντολών φαίνονται στο παραπάνω σχήμα. Ακολούθως η μονάδα ελέγχου αποκωδικοποιεί την εντολή 166D και καθορίζει ότι πρέπει να φορτώσει στον καταχωρητή 6 τα περιεχόμενα της μνήμης στην διεύθυνση 6D. Στη συνεχεία εκτελεί την εντολή όποτε ο καταχωρητής 6 πράγματι φορτώνεται. 38
Παράδειγµα Εκτέλεσης Προγράµµατος: Άθροισµα 2 αριθµών: 3 η - 5 η Εντολή 3 η Εντολή Αφού ο PC περιέχει τώρα την διεύθυνση Α4, η CU ανακαλεί την επόμενη εντολή που ξεκινά από αυτήν την διεύθυνση. Το αποτέλεσμα είναι ότι η εντολή 5056 τοποθετείται στο IR και ο PC αυξάνεται στο Α6. Η PC τώρα αποκωδικοποιεί τα περιεχόμενα του IR και τα εκτελεί ενεργοποιώντας το κύκλωμα πρόσθεσης ακεραίων σε μορφή συμπληρ. ως προς 2 με εισόδους τους καταχωρητές 5 & 6. Κατά τη διάρκεια αυτού του βήματος εκτέλεσης, η ALU εκτελεί την επιθυμητή πρόσθεση, τοποθετεί το αποτέλεσμα στον καταχωρητη 0 (όπως απαιτείται από την CU) και αναφέρει στην CU ότι τελείωσε. 4 η Εντολή Η CU ξεκινά τον επόμενο κύκλο μηχανής. Με τη βοήθεια του PC λαμβάνει την επόμενη εντολή (306Ε) από τα δυο κελιά μνήμης αρχίζοντας από την θέση μνήμης Α6 και αυξάνει τον PC στο Α8. Η εντολή αποκωδικοποιείται και εκτελείται. Σε αυτό το σημείο το άθροισμα τοποθετείται από τον καταχωρητή 0 στην θέση μνήμης 6Ε. 5 η Εντολή Η επόμενη εντολή λαμβάνεται αρχίζοντας από τη θέση μνήμης Α8 και ο PC αυξάνεται στο ΑΑ. Τα περιεχόμενα του IR (δηλ. C000) αποκωδικοποιούνται τώρα σαν εντολή παύσης (HALT). Συνεπώς η μηχανή σταματά. Κατά τη διάρκεια του βήματος εκτέλεσης του κύκλου μηχανής και το πρόγραμμα τερματίζεται. 39
Άσκηση (θέµα) Δίπλα φαίνονται τα περιεχόµενα των θέσεων µνήµης µεταξύ των διευθύνσεων (20) 16 έως (28) 16 στην «µηχανή παράδειγµα» που χρησιµοποιήθηκε στο µάθηµα. Αν η µηχανή ξεκινήσει µε τον µετρητή προγράµµατος (Program Counter PC) στο (20) 16, να ευρεθούν όταν σταµατήσει το πρόγραµµα: (α) το περιεχόµενο των καταχωρητών 0, 1 και 2, (β) το περιεχόµενο της διεύθυνσης (30) 16, και (γ) το περιεχόµενο της διεύθυνσης (Β0) 16. ΛΥΣΗ: 1220: 3230: B021: 2032: 30B0: 2120: C000: reg[2]:=mem[20]=(12) 16 mem[30]:=reg[2]=(12) 16 PC:=(21) 16 reg[0]:=(32) 16 mem[b0]:=reg[0]=(32) 16 reg[1]:=(20) 16 HLT Διεύθυνση Περιεχόµενο 20 12 21 20 22 32 23 30 24 B0 25 21 26 20 27 C0 Κώδικας Τελεστές Εντολή Λειτου Λειτουργ. 28 2 RXY load R,XY register[r]:=xy 00 1 RXY load R,[XY] register[r]:=memory[xy] 3 RXY store R,[XY] memory[xy]:=register[r] D 0RS load R,[S] register[r]:=memory[register[s]] E 0RS store R,[s] memory[register[s]]:=register[r] 4 0RS move S,R register[s]:=register[r] 5 RST addi R,S,T register[r]=register[s]+register[t] 6 RST addf R,S,T register[r]:=register[s]=+register[t] 7 RST or R,S,T register[r]:=register[s] OR register[t 8 RST and R,S,T register[r]:=register[s]and register 9 RST xor R,S,T register[r]:=register[s] XOR register A R0X ror R,X register[r]:=register[r] ROR X...RΟ B RXY 0XY jmpeq R=R0,XY jmp XY PC:=XY, if R=R0 PC:=XY F RXY jmple