H επιστήμη των υπολογιστών Χειρισμός Δεδομένων Αρχιτεκτονική Υπολογιστών Κεφάλαιο 2
Οργάνωση υπολογιστών ΚΜΕ Κύρια Μνήμη Υποσύστημα εισόδου/εξόδου
Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ)
Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) αριθμητική και λογική μονάδα ή ΑΛΜ (arithmetic logic unit, ALU) εκτελεί αριθμητικές και λογικές πράξεις καταχωρητές (registers) γρήγορες αυτόνομες θέσεις αποθήκευσης για την προσωρινή αποθήκευση δεδομένων Π.χ. Καταχωρητής Εντολών, Μετρητής προγράμματος Αρχείο Καταχωρητών γενικής χρήσης μονάδα ελέγχου (control unit) μοιάζει με το τμήμα του ανθρώπινου εγκεφάλου που ελέγχει τη λειτουργία κάθε οργάνου του σώματος και ο έλεγχος αυτός επιτυγχάνεται μέσω διαύλων που είναι είτε ανοιχτοί είτε κλειστοί
Σύνδεση ΚΜΕ και Μνήμης
Σύνδεση ΚΜΕ και Μνήμης Ο δίαυλος δεδομένων (data bus) αποτελείται από πολλά καλώδια, καθένα από τα οποία μεταφέρει 1 μπιτ τη φορά. Ο αριθμός των καλωδίων εξαρτάται από το μέγεθος της λέξης. Αν σε κάποιον υπολογιστή η λέξη είναι 32 μπιτ (4 μπάιτ), απαιτείται δίαυλος δεδομένων με 32 καλώδια, έτσι ώστε και τα 32 μπιτ της λέξης να μπορούν να μεταφερθούν ταυτόχρονα. Ο δίαυλος διευθύνσεων (address bus) επιτρέπει την προσπέλαση μιας συγκεκριμένης λέξης στη μνήμη. Ο αριθμός των καλωδίων του διαύλου διευθύνσεων εξαρτάται από το χώρο διευθύνσεων της μνήμης. Αν η μνήμη διαθέτει 2ν λέξεις, ο δίαυλος διευθύνσεων πρέπει να μεταφέρει ν μπιτ τη φορά. Συνεπώς, πρέπει να διαθέτει ν καλώδια. Ο δίαυλος ελέγχου (control bus) αναλαμβάνει την επικοινωνία μεταξύ της ΚΜΕ και της μνήμης. Για παράδειγμα, η ΚΜΕ πρέπει να στέλνει στη μνήμη κωδικούς ώστε να προσδιορίζει την λειτουργία ανάγνωσης και τη λειτουργία εγγραφής.
Γλώσσα Μηχανής
Γλώσσα Μηχανής Για να γίνει δυνατή η εφαρμογή της έννοιας του αποθηκευμένου προγράμματος, οι ΚΜΕ σχεδιάζονται έτσι ώστε Να μπορούν να αναγνωρίσουν εντολές που έχουν κωδικοποιηθεί ως σχήματα bit Γλώσσα μηχανής: Σύνολο εντολών (κωδικοποιημένες)
Δύο διαφορετικές Αρχιτεκτονικές CISC (complex instruction set computer) Συμπεριλαμβάνονται σύνθετες εντολές Εύκολος προγραμματισμός Επιπλέον φόρτος Intel-Pentium RISC (reduced instruction set computer) Οι σύνθετες εντολές προσομοιώνονται με τη χρήση υποσυνόλου απλών εντολών Δύσκολος και χρονοβόρος προγραμματισμός Apple-PowerPC
Το ρεπερτόριο των εντολών Σε όλες τις αρχιτεκτονικές υπολογιστών υπάρχουν οι παρακάτω κατηγορίες εντολών γλώσσας μηχανής: Εντολές επικοινωνίας με τη μνήμη Αριθμητικές και Λογικές εντολές Εντολές ελέγχου
1. Εντολές Επικοινωνίας με τη Μνήμη Αποτελείται από εντολές που ζητούν την ανάγνωση ή την εγγραφή δεδομένων στην μνήμη. read write load store, move μεταφορά δεδομένων από τη μία θέση στην άλλη Ουσιαστικά, πρόκειται για αντιγραφή – και όχι μεταφορά των δεδομένων – γιατί τα δεδομένα που μεταφέρονται, σπανίως διαγράφονται από την αρχική τους θέση
2. Αριθμητικές και Λογικές Εντολές Αποτελείται από εντολές που λένε στη μονάδα ελέγχου να ζητήσει μια δραστηριότητα μέσα στην αριθμητική και λογική μονάδα (ALU), δηλαδή να εκτελέσει: Αριθμητικές πράξεις Λογικές πράξεις Πράξεις ολίσθησης Πράξεις περιστροφής
3. Εντολές Ελέγχου Αποτελείται από εντολές που κατευθύνουν την εκτέλεση του προγράμματος Εντολές διακλάδωσης χωρίς συνθήκη ή εντολές μεταπήδησης ή εντολές άλματος Εντολές διακλάδωσης υπό συνθήκη
Παράδειγμα Αποθηκευμένου Προγράμματος σε Γλώσσα Μηχανής Εντολή 1 ΦΟΡΤΩΣΕ (LOAD) στον καταχωρητή R1 μια τιμή από την περιοχή της Κύριας Μνήμης με διεύθυνση 0000000000 Εντολή 2 ΦΟΡΤΩΣΕ (LOAD) στον καταχωρητή R2 μια τιμή από την περιοχή της Κ.Μ. με διεύθυνση 0001101100 Εντολή 3 Αν η δεύτερη τιμή είναι 0, ΠΗΓΑΙΝΕ (JUMP) στην Εντολή 6 Εντολή 4 ΔΙΑΙΡΕΣΕ (DIVIDE) τα περιεχόμενα του καταχωρητή R1 με τα περιεχόμενα του καταχωρητή R2 και τοποθέτησε το αποτέλεσμα στον καταχωρητή R3 Εντολή 5 ΑΠΟΘΗΚΕΥΣΕ (STORE) τα περιεχόμενα του καταχωρητή R3 στην περιοχή της Κ.Μ. με διεύθυνση 0101011100 Εντολή 6 ΤΕΛΟΣ (STOP)
Γλώσσα Μηχανής Εκπαιδευτικού Σκοπού Περιγράφεται στο Παράρτημα Γ’ του βιβλίου σας Αξιοποιεί 16 καταχωρητές γενικής χρήσης και 256 κελιά Κύριας Μνήμης, με χωρητικότητα 8bit το καθένα Διευθύνσεις καταχωρητών: Από 010 (016) έως 1510 (F16) Διευθύνσεις κελιών Κ.Μ. Από 0 (016) έως 255 (F F16)
Γλώσσα Μηχανής Εκπαιδευτικού Σκοπού Κάθε εντολή αυτής της γλώσσας μηχανής κωδικοποιείται από: Το σχήμα μπιτ (4 μπιτ) στο πεδίο κωδικού λειτουργίας προσδιορίζει ποια από τις στοιχειώδεις λειτουργίες (STORE, SHIFT, XOR, JUMP) ζητάει η εντολή Το σχήμα μπιτ (12 μπιτ) στο πεδίο τελεστέων παρέχει πιο λεπτομερείς πληροφορίες σχετικά με τη λειτουργία που καθορίζεται από τον κωδικό λειτουργίας Η γλώσσα αυτή διαθέτει 12 βασικές εντολές Κάθε μία από αυτές αποτελείται από 16 μπιτ
Γλώσσα Μηχανής Εκπαιδευτικού Σκοπού Σύνθεση μιας εντολής του Παραρτήματος Γ’ 0011 0101 1010 0111 Πραγματικό Σχήμα bit (16 bit) 3 5 Α 7 Δεκαεξαδική μορφή (4 ψηφία) Κωδικός Λειτουργίας Τελεστέοι
Γλώσσα Μηχανής Εκπαιδευτικού Σκοπού Αποκωδικοποίηση εντολής 3 5 Α 7 Κωδικός Λειτουργίας: 3 3: Αποθήκευση των περιεχομένων ενός καταχωρητή σε ένα κελί Κ.Μ. Πεδίο Τελεστέων: 5 Α 7 5: Προσδιορισμός του καταχωρητή, του οποίου τα περιεχόμενα θα αποθηκευθούν στη μνήμη Α 7: Προσδιορισμός της διεύθυνσης του κελιού Κ.Μ. που θα δεχθεί τα περιεχόμενα του καταχωρητή
Εκτέλεση Προγράμματος
Εκτέλεση Προγράμματος Ο υπολογιστής εκτελεί ένα πρόγραμμα που είναι αποθηκευμένο στη μνήμη του ανακαλώντας τις εντολές από τη μνήμη στη μονάδα ελέγχου Οι εντολές εκτελούνται σειριακά, εκτός αν κάποια εντολή διακλάδωσης αλλάξει τη σειρά με την οποία έχουν γραφεί στο πρόγραμμα
Διαδικασία Εκτέλεσης Προγράμματος Η Κ.Μ.Ε. έχει δύο καταχωρητές ειδικού σκοπού (ειδικής χρήσης): Μετρητής Προγράμματος (Program Counter) Περιέχει τη διεύθυνση Κ.Μ. Της επόμενης εντολής που πρόκειται να εκτελεστεί Καταχωρητής Εντολών (Instruction Register) Περιέχει την εντολή που πρόκειται να εκτελεστεί
Διαδικασία Εκτέλεσης Προγράμματος Η Μονάδα ελέγχου της Κ.Μ.Ε. επαναλαμβάνει μία διαδικασία που είναι γνωστή ως κύκλος μηχανής (machine cycle)
Κύκλος Μηχανής Αποτελείται από τρία βήματα Προσκόμιση/ Ανάκληση Πάρε την επόμενη εντολή από τη μνήμη, όπως ορίζεται από το Μετρητή Προγράμματος Αύξησε τον Μετρητή Προγράμματος Αποκωδικοποίηση Αποκωδικοποίησε το σχήμα μπιτ στον Καταχωρητή Εντολών Εκτέλεση Εκτέλεσε την ενέργεια που ζητάει η εντολή του Καταχωρητή Εντολών
Παράδειγμα Εκτέλεσης Προγράμματος Πρόγραμμα: 156C 166D 5056 Εντολές 306E C000
Παράδειγμα Εκτέλεσης Προγράμματος Κ.Μ.Ε. Κύρια Μνήμη Διεύθυνση Περιεχόμενο A0 Α0 15 1 A1 Μετρητής Προγράμματος 6C 2 Δίαυλος R/W Δεδομένα Διευθύνσεις A2 16 A3 6D . A4 50 A5 56 A6 30 A7 6E A8 Καταχωρητής Εντολών C0 A9 00 . F
Προσκόμιση/ Ανάκληση Κ.Μ.Ε. Α0 Κύρια Μνήμη 156C Δίαυλος Διεύθυνση Στην αρχή του βήματος αυτού, προσκομίζεται από την Κ.Μ. η εντολή που ξεκινά στη διεύθυνση Α0 και τοποθετείται στον Καταχωρητή Εντολών Κ.Μ.Ε. Κύρια Μνήμη Διεύθυνση Περιεχόμενο A0 Α0 15 1 A1 Μετρητής Προγράμματος 6C 2 Δίαυλος R/W Δεδομένα Διευθύνσεις A2 16 A3 6D . A4 50 A5 56 A6 30 156C A7 6E A8 Καταχωρητής Εντολών C0 A9 00 . F
Προσκόμιση/ Ανάκληση Κ.Μ.Ε. Α2 Κύρια Μνήμη 156C Δίαυλος Διεύθυνση Κατόπιν, ο Μετρητής Προγράμματος αυξάνεται ώστε να δείχνει στην επόμενη εντολή. Κ.Μ.Ε. Κύρια Μνήμη Διεύθυνση Περιεχόμενο A0 Α2 15 1 A1 Μετρητής Προγράμματος 6C 2 Δίαυλος R/W Δεδομένα Διευθύνσεις A2 16 A3 6D . A4 50 A5 56 A6 30 156C A7 6E A8 Καταχωρητής Εντολών C0 A9 00 . F
Λογικές Πράξεις
Πίνακες Αλήθειας
Εφαρμογές Οι τρεις λογικές διμελείς πράξεις χρησιμοποιούνται για την τροποποίηση σχημάτων μπιτ. Μπορούν να ενεργοποιούν, να απενεργοποιούν, ή να αντιστρέφουν συγκεκριμένα μπιτ Το σχήμα μπιτ προς τροποποίηση έρχεται σε σύζευξη (AND), διάζευξη (OR), ή αποκλειστική διάζευξη (XOR) με το δεύτερο σχήμα μπιτ, το οποίο ονομάζεται μάσκα
Απενεργοποίηση συγκεκριμένων μπιτ (AND) Για να απενεργοποιηθεί ένα μπιτ στο σχήμα προορισμού, το αντίστοιχο μπιτ στη μάσκα πρέπει να είναι 0. Για να μείνει ένα μπιτ στο σχήμα προορισμού ως έχει, το αντίστοιχο μπιτ της μάσκας πρέπει να είναι 1.
Ενεργοποίηση συγκεκριμένων μπιτ (OR) Για να ενεργοποιηθεί ένα μπιτ στο σχήμα προορισμού, το αντίστοιχο μπιτ στη μάσκα πρέπει να είναι 1. Για να μείνει ένα μπιτ στο σχήμα προορισμού ως έχει, το αντίστοιχο μπιτ της μάσκας πρέπει να είναι 0.
Αντιστροφή συγκεκριμένων μπιτ (XOR) Για να αντιστραφεί ένα μπιτ στο σχήμα προορισμού, το αντίστοιχο μπιτ στη μάσκα πρέπει να είναι 1. Για να μείνει ένα μπιτ ως έχει στο σχήμα προορισμού, το αντίστοιχο μπιτ της μάσκας πρέπει να είναι 0.
Πράξεις Περιστροφής και Ολίσθησης Η εφαρμογή αυτών των πράξεων έχει ως αποτέλεσμα τη μετακίνηση των μπιτ μέσα σε έναν καταχωρητή Συχνά χρησιμοποιούνται για την επίλυση προβλημάτων στοίχισης Π.χ. την τροποποίηση ενός σχήματος μπιτ έτσι ώστε να χρησιμοποιηθεί ως μάσκα Ταξινομούνται ανάλογα με την κατεύθυνση της κίνησης (δεξιά ή αριστερά)
Πράξεις Περιστροφής Η δεξιά περιστροφή μετακινεί κάθε μπιτ μία θέση προς τα δεξιά, και θέτει το τελευταίο μπιτ πρώτο Η αριστερή περιστροφή μετακινεί κάθε μπιτ μία θέση προς τα αριστερά, και θέτει το πρώτο μπιτ τελευταίο α β γ δ ε στ ζ η β γ δ ε στ ζ η α Είσοδος Έξοδος Αριστερή περιστροφή η α β γ δ ε στ ζ Δεξιά
Πράξεις Ολίσθησης Η δεξιά ολίσθηση καταργεί το δεξιότερο μπιτ, μετακινεί κάθε μπιτ μία θέση προς τα δεξιά, και προσθέτει ένα 0 ως το πιο αριστερό μπιτ. Η αριστερή ολίσθηση καταργεί το πιο αριστερό μπιτ, μετακινεί κάθε μπιτ μία θέση προς τα αριστερά, και προσθέτει ένα 0 ως το δεξιότερο μπιτ
Πράξεις Ολίσθησης Δείξτε πώς μπορεί να διαιρεθεί ή να πολλαπλασιαστεί ένας αριθμός με το 2 με τη βοήθεια των πράξεων ολίσθησης Λύση Όταν ένα σχήμα μπιτ αναπαριστά κάποιον μη προσημασμένο αριθμό, η δεξιά ολίσθηση διαιρεί τον αριθμό αυτό με το 2 (ακέραια διαίρεση). Το σχήμα 00111011 αντιπροσωπεύει τον αριθμό 59. Αν ολισθήσουμε τον αριθμό προς τα δεξιά, παίρνουμε 00011101, το οποίο ισούται με 29. Αν πάλι ολισθήσουμε τον αρχικό αριθμό (59) προς τα αριστερά, παίρνουμε 01110110, το οποίο ισούται με 118.
Αριθμητικές Πράξεις ADD SUB MUL DIV Για κάθε αριθμητική πράξη υπάρχουν πολλές παραλλαγές (με αντίστοιχους κωδικούς) Παράδειγμα: Η πρόσθεση αριθμών που είναι κωδικοποιημένοι σε σύστημα συμπληρώματος ως προς 2, διαφέρει από την πρόσθεση αριθμών που είναι κωδικοποιημένοι σε σύστημα κινητής υποδιαστολής. Στο Παράρτημα Γ’ υπάρχουν διαφορετικοί κωδικοί λειτουργίας για αυτές τις πράξεις, 5 και 6 αντίστοιχα.
Επικοινωνία με άλλες συσκευές
Επικοινωνία μέσω ελεγκτών Οι συσκευές Ε/Ε δεν είναι δυνατό να συνδεθούν απευθείας στους διαύλους που συνδέουν την ΚΜΕ με τη μνήμη, επειδή η φύση των συσκευών αυτών είναι διαφορετική από τη φύση της ΚΜΕ και της μνήμης. Οι συσκευές Ε/Ε είναι ηλεκτρομηχανικές, μαγνητικές, ή οπτικές, ενώ η ΚΜΕ και η μνήμη είναι ηλεκτρονικές συσκευές Οι συσκευές Ε/Ε συνδέονται με τους διαύλους μέσω μιας συσκευής που ονομάζεται ελεγκτής εισόδου/εξόδου ή διασύνδεση (interface).
Σύνδεση συσκευών Ε/Ε
Ελεγκτές Οι ελεγκτές (ή διασυνδέσεις) εξομαλύνουν τις διαφορές μεταξύ των συσκευών Ε/Ε και της ΚΜΕ και της μνήμης. Ένας ελεγκτής μπορεί να είναι σειριακή ή παράλληλη συσκευή. Οι σειριακοί ελεγκτές διαθέτουν σύνδεση ενός καλωδίου με τη συσκευή, ενώ οι παράλληλοι διαθέτουν συνδέσεις πολλών καλωδίων με τη συσκευή, ώστε να μπορούν να μεταφέρουν πολλά μπιτ ταυτόχρονα.
Εντολές Εισόδου/Εξόδου Ο υπολογιστής χρειάζεται εντολές για τη μεταφορά δεδομένων από τις συσκευές Ε/Ε προς την ΚΜΕ και τη μνήμη. Σε κάποιες αρχιτεκτονικές υπολογιστών, η γλώσσα μηχανής διαθέτει πρόσθετους κωδικούς λειτουργίας για τις αυτές τις εντολές Ε/Ε Σε άλλες αρχιτεκτονικές, χρησιμοποιούνται οι κωδικοί λειτουργίας των εντολών ανάγνωσης / εγγραφής, που παρέχονται για την επικοινωνία ΚΜΕ με ΚΜ, και για την επικοινωνία μεταξύ ΚΜΕ και συσκευών Ε/Ε
Διευθυνσιοδότηση Συσκευών Εισόδου/Εξόδου Απομονωμένη στη Μνήμη Είσοδος / Έξοδος Σε κάθε ελεγκτή αντιστοιχίζεται ένα μοναδικό σύνολο διευθύνσεων Εισόδου/Εξόδου, που χρησιμοποιούν οι εντολές Ε/Ε για να προσδιορίσουν το συγκεκριμένο ελεγκτή Το σύνολο διευθύνσεων του κάθε ελεγκτή ονομάζεται θύρα (port) Επειδή αυτές οι διευθύνσεις μπορούν να είναι ίδιες με τις διευθύνσεις της Κ.Μ., ένα σήμα καθορίζει στο δίαυλο αν το μήνυμα που μεταδίδεται αφορά σε διεύθυνση Κ.Μ. ή διεύθυνση ελεγκτή Χρησιμοποιεί διαφορετικούς κωδικούς λειτουργίας για τις εντολές Ε/Ε
Διευθυνσιοδότηση Συσκευών Εισόδου/Εξόδου Αντιστοιχισμένη στη μνήμη Ε/Ε Κάθε ελεγκτής είναι σχεδιασμένος ώστε να αποκρίνεται σε αναφορές προς ένα μοναδικό σύνολο διευθύνσεων, που και πάλι ονομάζεται θύρα Το Λειτουργικό σύστημα είναι σχεδιασμένο ώστε να μην επιτρέπει αναφορές σε αυτές τις διευθύνσεις Χρησιμοποιεί τους κωδικούς λειτουργίας των εντολών ανάγνωσης / εγγραφής ως εντολές Ε/Ε
Άμεση Προσπέλαση Μνήμης Η δυνατότητα των ελεγκτών να προσπελαύνουν την Κύρια Μνήμη Πλεονέκτημα: Αυξάνει την απόδοση του υπολογιστή Π.χ. Ανάκτηση δεδομένων από έναν τομέα δίσκου Η ΚΜΕ στέλνει αίτηση ανάγνωσης στον ελεγκτή δίσκου, ζητώντας του να διαβάσει τα δεδομένα του τομέα και να τα τοποθετήσει σε συγκεκριμένο τμήμα κελιών της ΚΜ Η ΚΜΕ ασχολείται με άλλες λειτουργίες για όση ώρα ο ελεγκτής πραγματοποιεί τη λειτουργία ανάγνωσης Μειονέκτημα: Αυξάνει την «ποσότητα» της επικοινωνίας που χειρίζεται ο δίαυλος του υπολογιστή, με πιθανή συνέπεια ο κεντρικός δίαυλος του υπολογιστή να «φράξει» (συμφόρηση von Neumann)
Ρυθμός Επικοινωνίας Δεδομένων Ο ρυθμός (ταχύτητα) με τον οποίο μεταφέρονται τα μπιτ από το ένα υπολογιστικό στοιχείο στο άλλο Μετράται σε μπιτ ανά δευτερόλεπτο (bits per second – bps) Kbps: 1000 bps Mbps: 1 000 000 bps Gbps: 1 000 000 000 bps Ο μέγιστος ρυθμός επικοινωνίας, συχνά ονομάζεται εύρος ζώνης (bandwidth)
Τύποι διαδρομών επικοινωνίας Παράλληλη επικοινωνία Την ίδια στιγμή, μεταφέρονται πολλά μπιτ, το καθένα από μία ξεχωριστή γραμμή Γρήγορη μεταφορά δεδομένων, αλλά πολύπλοκη διαδρομή επικοινωνίας Π.χ. εσωτερικός δίαυλος υπολογιστή Σειριακή επικοινωνία Κάθε φορά, μεταφέρεται μόνο 1 μπιτ Αργή μεταφορά δεδομένων, αλλά απλούστερη διαδρομή επικοινωνίας Π.χ. το μόντεμ
Άλλες Αρχιτεκτονικές
Διοχέτευση Διεκπεραιωτική ικανότητα (throughput): η συνολική ποσότητα εργασίας που πραγματοποιεί μία μηχανή σε συγκεκριμένο χρονικό διάστημα Η διοχέτευση ή σωλήνωση (pipelining) αποτελεί μία μέθοδο αύξησης της διεκπεραιωτικής ικανότητας του υπολογιστή
Διοχέτευση Είναι μία τεχνική που επιτρέπει την επικάλυψη των βημάτων του κύκλου μηχανής Την ώρα που εκτελείται η εντολή Α μπορεί να προσκομίζεται/ανακαλείται η επόμενη εντολή Β. Επικάλυψη του 2ου βήματος της εντολής Α με το 1ο βήμα της εντολής Β
Πολυεπεξεργαστικές Μηχανές Η διοχέτευση μπορεί να θεωρηθεί το πρώτο βήμα προς την παράλληλη επεξεργασία Όμως η πραγματική παράλληλη επεξεργασία απαιτεί την ύπαρξη και χρήση περισσότερων από μίας μονάδων επεξεργασίας
Τεχνικές υλοποίησης Παράλληλης Επεξεργασίας Σύνδεση πολλών μονάδων επεξεργασίας, με κάθε μία να ενεργεί ανεξάρτητα, αλλά συγχρονισμένα με την άλλη διαφορετικές ακολουθίες εντολών εκτελούνται σε διαφορετικά σύνολα δεδομένων – αρχιτεκτονική MIMD (multiple-instruction stream, multiple-data stream)
Τεχνικές υλοποίησης Παράλληλης Επεξεργασίας Σύνδεση πολλών μονάδων επεξεργασίας, έτσι ώστε να εκτελούν την ίδια ακολουθία εντολών από κοινού, η κάθε μία με το δικό της σύνολο δεδομένων – αρχιτεκτονική SIMD (single-instruction stream, multiple-data stream)