ΚΕΦΑΛΑΙΟ 2: Χειρισμός Δεδομένων 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράμματος 2.4 Αριθμητικές και λογικές εντολές 2.5 Επικοινωνία με άλλες συσκευές 2.6 Άλλες αρχιτεκτονικές Οι διαφάνειες βασίζονται σε μεγάλο βαθμό σε αυτές που συνοδεύονται με το προτεινόμενο σύγγραμμα, καθώς και στις διαφάνειες προηγούμενων ετών του κ. Κουρκουμπέτη. 1
Η CPU και η κύρια μνήμη συνδέονται μέσω ενός διαύλου ALU Αποθηκεύουμε προγράμματα και δεδομένα 2
Αρχιτεκτονική Υπολογιστών Κεντρική μονάδα επεξεργασίας (CPU) ή επεξεργαστής είναι πακεταρισμένη σε μικρά επίπεδα τετράγωνα (5cm x5cm) H Κεντρική μονάδα επεξεργασίας περιέχει: 1. την αριθμητική και λογική μονάδα (Arithmetic Logical Unit, ALU): αποτελείται από κυκλώματα για εκτέλεση πράξεων στα δεδομένα (πρόσθεση, αφαίρεση κλπ) 2. τη μονάδα ελέγχου (control unit): ελέγχει και συντονίζει τις ενέργειες του υπολογιστή 3. τους καταχωρητές (registers): για προσωρινή αποθήκευση δεδομένων στην CPU Γενικής χρήσης (general-purpose), ειδικής χρήσης (special-purpose) Για να εκτελεστεί μια πράξη με δεδομένα αποθηκευμένα στην κύρια μνήμη, η μονάδα ελέγχου πρέπει να τα μεταφέρει από τη μνήμη στους καταχωρητές γενικής χρήσης Η ALU κάνει τις πράξεις, και μεταφέρει το αποτέλεσμα σε έναν άλλο καταχωρητή γενικής χρήσης 3
Αρχιτεκτονική Υπολογιστών (2) 4. την «κρυφή» ή λανθάνουσα μνήμη (cache memory): μνήμη που βρίσκεται μέσα στην CPU Αρκετές εκατοντάδες KB Πολύ υψηλής ταχύτητας Η μηχανή κρατάει στην cache αντίγραφο του τμήματος της κύριας μνήμης που χρησιμοποιείται Αντί να γίνεται επικοινωνία καταχωρητών και κύριας μνήμης, γίνεται επικοινωνία καταχωρητών με την cache Αποτέλεσμα: πιο γρήγορη εκτέλεση εντολών O δίαυλος (bus), συνδέει την CPU με την κύρια μνήμη. Η Μητρική κάρτα (motherboard) περιλαμβάνει όλα τα παραπάνω, και άλλα. 4
3 είδη αποθηκευτικού χώρου Μνήμη cache Κύρια μνήμη (main memory) Σκληρός δίσκος (HD) Σε ταχύτητα ανάκτησης: HD < main memory < cache Σε μέγεθος: cache < main memory < HD 5
Πρόβλημα Θέλουμε να ελαχιστοποιήσουμε το συνολικό χρόνο ανάκτησης δεδομένων Έχουμε 10 GΒ δεδομένων Πως θα τα αναθέσουμε στην cache (500KB), main memory (1GB), HD (500GB); Χρόνοι ανάκτησης: HD: 5 milli-sec MM: 50 nano-sec Cache: 500pico-sec 6
Η έννοια του αποθηκευμένου προγράμματος Stored-program concept Ένα πρόγραμμα είναι απλώς ένας ιδιαίτερος τύπος δεδομένων Ένα πρόγραμμα μπορεί να αποθηκευτεί στην κύρια μνήμη Μία μηχανή γενικής χρήσεως μπορεί να τρέξει πολλά διαφορετικά προγράμματα Η CPU ανακτά σειριακά τις εντολές του προγράμματος από τη μνήμη, τις αποκωδικοποιεί (καταλαβαίνει) και τις εκτελεί 7
Γλώσσα μηχανής: ορισμοί Γλώσσα μηχανής είναι το σύνολο όλων των εντολών μαζί με ένα σύστημα κωδικοποίησης (που κάνει τις εντολές αναγνωρίσιμες) Εντολή μηχανής είναι μία εντολή κωδικοποιημένη ως ακολουθία bit που αναγνωρίζεται απευθείας από τη CPU Χρειάζεται ένα σχετικά μικρό σύνολο εντολών που να μπορεί να αναγνωρίζει η CPU 8
Φιλοσοφίες σχεδιασμού της CPU Υπολογιστής περιορισμένου συνόλου εντολών (Reduced Instruction-set computer, RISC): Εκτέλεση ελάχιστου συνόλου από εντολές μηχανής, γρήγορη και αποδοτική μηχανή. Παραδείγματα: PowerPC, IBM και Motorola Υπολογιστής σύνθετου συνόλου εντολών (Complex Instruction-set computer, CISC): Μεγάλο πλήθος σύνθετων εντολών κάνει πιο εύκολο τον προγραμματισμό Παραδείγματα: Pentium της Intel Αρχικά επικράτησε η RISC, η μείωση κόστους οδήγησε σε εξάπλωση της CISC CISC: υψηλή κατανάλωση ισχύος RISC: δημοφιλής σε digital TVs, κινητά, GPS, 9
Ομάδες εντολών μηχανής Ομάδα εντολών μεταφοράς δεδομένων (data transfer): αντιγράφει δεδομένα μεταξύ CPU και κύριας μνήμης. LOAD: αντιγράφει δεδομένα από την μνήμη σε έναν καταχωρητή γενικής χρήσης STORE: αντιγράφει δεδομένα από έναν καταχωρητή γενικής χρήσης στη μνήμη Εντολές Ι/Ο: εντολές για επικοινωνία με μέρη του υπολογιστή εκτός CPU και κύριας μνήμης (π.χ. Σκληρός δίσκος) Αριθμητική και λογική ομάδα εντολών (arithmetic / logical): χρησιμοποιεί υπάρχουσες τιμές δεδομένων για να κάνει πράξεις και να υπολογίσει μία νέα τιμή δεδομένων 10
Ομάδες εντολών μηχανής (2) Αριθμητική και λογική ομάδα εντολών (arithmetic / logical): Αριθμητικές πράξεις (+, -, x, / ) Λογικές πράξεις: AND, OR, XOR SHIFT / ROTATE: Ολίσθηση περιεχομένων καταχωρητή Ομάδα εντολών ελέγχου (control): κατευθύνει την εκτέλεση του προγράμματος Εντολή άλματος JUMP (BRANCH): μετάβαση σε κάποια θέση μνήμης για εκτέλεση της εντολής που είναι αποθηκευμένη εκεί Υπό συνθήκη JUMP (conditional JUMP): άλμα, αν μια συνθήκη ικανοποιείται (όπως η εντολή if στην C) Unconditional JUMP 11
Επικοινωνία CPU κύριας μνήμης ALU Αποθηκεύουμε προγράμματα και δεδομένα 12
Πρόσθεση τιμών που είναι αποθηκευμένες στη μνήμη Υλοποιεί την εντολή υψηλού επιπέδου x = y + z Βήμα 1. Πάρε από τη μνήμη μία από τις τιμές που πρόκειται να προστεθούν και τοποθέτησέ τη σε έναν καταχωρητή. Βήμα 2. Πάρε από τη μνήμη την άλλη τιμή και τοποθέτησέ τη σε έναν άλλον καταχωρητή. Βήμα 3. Ενεργοποίησε το κύκλωμα της πρόσθεσης με τους καταχωρητές που χρησιμοποιήθηκαν στα Βήματα 1 και 2 ως εισόδους και ένα διαφορετικό καταχωρητή για την αποθήκευση του αποτελέσματος. Βήμα 4. Αποθήκευσε το αποτέλεσμα στη μνήμη. Βήμα 5. Τέλος. 13
Διαίρεση τιμών αποθηκευμένων στη μνήμη Υλοποιεί την εντολή υψηλού επιπέδου x = y z Βήμα 1. ΦΟΡΤΩΣΕ (LOAD) σε έναν καταχωρητή μία τιμή από τη μνήμη. Βήμα 2. ΦΟΡΤΩΣΕ (LOAD) σε ένα διαφορετικό καταχωρητή την άλλη τιμή από τη μνήμη. Βήμα 3. Αν η δεύτερη τιμή είναι μηδέν, ΠΗΓΑΙΝΕ (JUMP) στο Βήμα 6. Βήμα 4. Διαίρεσε το περιεχόμενο του πρώτου καταχωρητή με το δεύτερο καταχωρητή και τοποθέτησε το αποτέλεσμα σε έναν τρίτο καταχωρητή. Βήμα 5. ΑΠΟΘΗΚΕΥΣΕ (STORE) τα περιεχόμενα του τρίτου καταχωρητή στη μνήμη. Βήμα 6. ΤΕΛΟΣ (STOP). 14
H αρχιτεκτονική του Υπολογιστή Απλή δομή για διδακτικούς λόγους 256 κυψελίδες μνήμης: 0,...255 8 bits (1 byte) για περιγραφή κάθε διεύθυνσης μνήμης 8 bits (1 byte) δεδομένων ανά κυψελίδα ALU 16 καταχωρητές γενικής χρήσης 0,... 15 2 καταχωρητές ειδικής χρήσης : Program Counter (PC), Instruction Register (IR) 15
Εκτέλεση προγράμματος Ελέγχεται από δύο καταχωρητές ειδικής χρήσης: Μετρητής προγράμματος (Program Counter, PC) : περιέχει την διεύθυνση μνήμης όπου βρίσκεται η επόμενη εντολή προς εκτέλεση Καταχωρητής εντολών (Instruction Register, IR) ο οποίος δείχνει την τρέχουσα εντολή Βήματα που ελέγχονται από τη μονάδα ελέγχου: Προσκόμιση. Αποκωδικοποίηση. Εκτέλεση. 16
Τα μέρη μίας εντολής μηχανής Αποτελείται από 16 bit (2 bytes) Πεδίο κωδικού λειτουργίας (op-code) όπου η ακολουθία bit προσδιορίζει ποια από τις στοιχειώδεις λειτουργίες ζητάει η εντολή Μία λειτουργία ανά εντολή Π.χ. LOAD, STORE, JUMP, XOR, SUM, Πεδίο τελεστέων (operand) όπου η ακολουθία bit παρέχει πιο λεπτομερείς πληροφορίες σχετικά με τη λειτουργία. Το πλήθος των τελεστέων διαφέρει ανάλογα με το κωδικό λειτουργίας. Π.χ. Στο LOAD περιλαμβάνει τη θέση μνήμης από όπου θα πάρουμε τα δεδομένα και τον αριθμό του καταχωρητή όπου θα τα αντιγράψουμε Στο SUM περιλαμβάνει τους καταχωρητές των 2 όρων του αθροίσματος και τον αριθμό του καταχωρητή όπου πρέπει να καταγραφεί το άθροισμα Κ.ο.κ 17
2-18 Παράδειγμα εντολής
Παράρτημα Γ: Μια Απλή Γλώσσα Μηχανής Κωδ. Λειτ. Τελεστέος Περιγραφή 1 R X Y Φορτώνει (LOAD) τον καταχωρητή R με την ακολουθία bit που υπάρχει στο κελί μνήμης με διεύθυνση XY. 2 R X Y Φορτώνει (LOAD) τον καταχωρητή R με την ακολουθία bit XY. 3 R X Y Αποθηκεύει (STORE) την ακολουθία bit που περιέχει ο καταχωρητής R στο κελί μνήμης με διεύθυνση XY. 4 0 R S Μετακινεί (MOVE) την ακολουθία bit που περιέχει ο καταχωρητής R στον καταχωρητή S. A-19
Παράρτημα Γ: Μια Απλή Γλώσσα Μηχανής (2) Κωδ Λειτ. Τελεστέος Περιγραφή 5 R S T Προσθέτει (ADD) τις ακολουθίες bit των καταχωρητών S και T (σε μορφή συμπληρώματος ως προς δύο), και τοποθετεί το αποτέλεσμα στον καταχωρητή R. 6 R S T Προσθέτει (ADD) τις ακολουθίες bit των καταχωρητών S και T (σε μορφή κινητής υποδιαστολής), και τοποθετεί το αποτέλεσμα στον καταχωρητή R. 7 R S T Εκτελεί την πράξη OR στις ακολουθίες bit των καταχωρητών S και Τ και τοποθετεί το αποτέλεσμα στον καταχωρητή R. 8 R S T Εκτελεί την πράξη AND στις ακολουθίες bit των καταχωρητών S και Τ και τοποθετεί το αποτέλεσμα στον καταχωρητή R. A-20
Παράρτημα Γ: Μια Απλή Γλώσσα Μηχανής (3) Κωδ Λειτ. Τελεστέος Περιγραφή 9 R S T Εκτελεί την πράξη ΧOR στις ακολουθίες bit των καταχωρητών S και Τ και τοποθετεί το αποτέλεσμα στον καταχωρητή R. A R 0 X Περιστρέφει (rotate) την ακολουθία bit του καταχωρητή R ένα bit προς τα δεξιά Χ φορές. Το bit του άκρου χαμηλής τάξης τοποθετείται στο άκρο υψηλής τάξης. B R X Y Μεταπηδά (JUMP) στην εντολή που βρίσκεται στο κελί μνήμης ΧΥ, αν η ακολουθία bit του R είναι ίδια με την ακολουθία bit του καταχωρητή 0. Αλλιώς συνεχίζεται η κανονική ροή της εκτέλεσης. C 0 0 0 Τερματίζει (HALT) την εκτέλεση. A-21
2-22 Αποκωδικοποίηση της εντολής 35A7
Αρχιτεκτονική της μηχανής μας Έστω τώρα στην θέση Μνήμης 2-3 Load: Φόρτωσε Τον κ/τή 0000 με τα περιχόμενα της δ/νσης μνήμης 17 CPU Register 0 Register 1 Program counter 00000100 Instruction register 0001 0000 00010001 00010011 0 1 2 3 4 17 Μνήμη 00010011 1 B 1 B Εντολές = 2 Βytes, άρα αρχίζουν σε ζυγές θέσεις μνήμης δεδομένα = 1 Βyte, οπουδήποτε στη μνήμη 23
Κωδικοποιημένες Εντολές Παράδειγμα προγράμματος Ερμηνεία Βήμα 1. Πάρε από τη μνήμη μία από τις τιμές που πρόκειται να προστεθούν και τοποθέτησέ τη σε έναν καταχωρητή. Βήμα 2. Πάρε από τη μνήμη την άλλη τιμή και τοποθέτησέ τη σε έναν άλλον καταχωρητή. Βήμα 3. Ενεργοποίησε το κύκλωμα της πρόσθεσης με τους καταχωρητές που χρησιμοποιήθηκαν στα Βήματα 1 και 2 ως εισόδους και ένα διαφορετικό καταχωρητή για την αποθήκευση του αποτελέσματος. Βήμα 4. Αποθήκευσε το αποτέλεσμα στη μνήμη. Βήμα 5. Τέλος 1 5 6 C Φόρτωσε στον καταχωρητη 5 την ακολουθία bit που βρίσκεται στο κελί μνήμης με διεύθυνση 6C 1 6 6 D Φόρτωσε στον καταχωρητη 6 την ακολουθία bit που βρίσκεται στο κελί μνήμης με διεύθυνση 6D 5 0 5 6 Πρόσθεσε τα περιεχόμενα των καταχωρητών 5 και 6 (με δεδομένο ότι βρίσκονται σε μορφή συμπληρώματος ως προς δύο), και αποθήκευσε το αποτέλεσμα στον καταχωρητή 0 3 0 6 E Αποθήκευσε τα περιεχόμενα του καταχωρητή 0 στο κελί μνήμης με διεύθυνση 6Ε C 0 0 0 Τέλος 24
Ο κύκλος μηχανής 25
Ρόλος της CPU Αν η εντολή είναι LOAD από τη μνήμη, η CPU: στέλνει κατάλληλα σήματα στη μνήμη Περιμένει μέχρι η μνήμη να στείλει τα δεδομένα Τοποθετεί τα δεδομένα στον αντίστοιχο καταχωρητή Αν η εντολή είναι αριθμητική πράξη, η CPU: Ενεργοποιεί το κατάλληλο κύκλωμα στην ALU Περιμένει να γίνει η εκτέλεση της πράξης Τοποθετεί το αποτέλεσμα της πράξης στον κατάλληλο καταχωρητή Αφού εκτελεστεί η εντολή στον instruction register, ξεκινά νέος κύκλος και η CPU φέρνει την επόμενη εντολή από την μνήμη 26
Αποκωδικοποίηση μιας άλλης εντολής JUMP JUMP: άλμα υπό συνθήκη Αν [Κατ.0] [Κατ.2], εντολή τερματίζεται, πηγαίνουμε στην επόμενη Αν [Κατ.0] = [Κατ.2], η τιμή 5 8 εγγράφεται στον Program Counter Τι σημαίνει η εντολή Β 0 5 8? 27
Παράδειγμα εκτέλεσης προγράμματος 156C Φόρτωσε στον καταχωρητη 5 το σχήμα bit που βρίσκεται στο κελί μνήμης με διεύθυνση 6C. 166D Φόρτωσε στον καταχωρητη 6 το σχήμα bit που βρίσκεται στο κελί μνήμης με διεύθυνση 6D. 5056 Πρόσθεσε τα περιεχόμενα των καταχωρητών 5 και 6 με δεδομένο ότι βρίσκονται σε μορφή συμπληρώματος ως προς δύο, και αποθήκευσε το αποτέλεσμα στον καταχωρητή 0. 306E Αποθήκευσε τα περιεχόμενα του καταχωρητή 0 στο κελί μνήμης με διεύθυνση 6Ε. C000 Τέλος. 28
Εκτέλεση του βήματος προσκόμισης (Fetch) του κύκλου μηχανής (α) 29
Εκτέλεση του βήματος προσκόμισης (Fetch) του κύκλου μηχανής (β) 30
Εκτέλεση του βήματος προσκόμισης (Fetch) του κύκλου μηχανής (γ) Κατόπιν, γίνεται ανάλυση της εντολής 1 5 6 C που βρίσκεται στον καταχωρητή εντολών LOAD register 5 με περιεχόμενα της διεύθυνσης μνήμης 6 C Στέλνεται σήμα στην διεύθυνση μνήμης 6 C Η διεύθυνση 6 C στέλνει τα περιεχόμενά της και αυτά φορτώνονται στον καταχωρητή 5 Νέος κύκλος Fetch CPU Κοιτάζει διεύθυνση μνήμης Α2 που υπάρχει στον Program Counter Εντολή 1 6 6 D έρχεται στον Instruction counter Program Counter = A4 Κ.ο.κ 31
Παράδειγμα περιστροφής προς τα δεξιά 32
Αριθμητικές και λογικές πράξεις Λογικές πράξεις : AND, OR, XOR. Πράξεις περιστροφής (rotation) και ολίσθησης (shift): κυκλική ολίσθηση (π.χ. Προς τα δεξιά): το δεξιότερο bit που βγαίνει εκτός byte πηγαίνει στο αριστερότερο άκρο που μένει κενό λογική ολίσθηση (π.χ. προς τα αριστερά): το δεξιότερο bit μένει κενό, μπαίνει 0 Αριστερή λογική ολίσθηση κατά 1, ισοδυναμεί με πολ/σμό επί 2) Αριθμητικές πράξεις: πρόσθεση, αφαίρεση, πολ/σμός, διαίρεση. Αλλάζουν ανάλογα με το αν γίνεται για ακεραίους (π.χ. Με αναπαράσταση συμπληρώματος ως προς 2) ή για floating-point Πολ/σμός και διαίρεση προκύπτουν με επαναλαμβανόμενες προσθέσεις και αφαιρέσεις αντίστοιχα 33
Επικοινωνία με άλλες συσκευές Ελεγκτής (controller): Μια ενδιάμεση συσκευή που χειρίζεται την επικοινωνία μεταξύ του υπολογιστή και μιας άλλης συσκευής Εξειδικευμένοι ελεγκτές για κάθε τύπο συσκευής Ελεγκτές γενικής χρήσης (USB και FireWire): χειρισμός διαφορετικών ειδών συσκευών (ποντίκια, εκτυπωτές, σαρωτές, εξωτερικοί σκληροί κλπ) Θύρα (port): Το σημείο στο οποίο συνδέεται μια συσκευή με τον υπολογιστή 34
Ελεγκτές συνδεδεμένοι στο δίαυλο (bus) μιας μηχανής 35
Είσοδος/Έξοδος αντιστοιχισμένη στην μνήμη Ε/Ε αντιστοιχισμένη στη μνήμη (Memory-mapped Ιnput/Output): Η CPU (ΚΜΕ) επικοινωνεί με τις περιφερειακές συσκευές σαν να ήταν κελιά μνήμης Σε κάθε συσκευή I/O αντιστοιχίζεται μια διεύθυνση, διαφορετική από αυτές της μνήμης Μέσω του διαύλου, η ΚΜΕ επικοινωνεί με εντολές LOAD, STORE με τον αντίστοιχο ελεγκτή της περιφερειακής συσκευής Μπορεί να υπάρχουν διαφορετικές εντολές στο ρεπερτόριο εντολών για επικοινωνία με διαφορετικές συσκευές 36
Επικοινωνία με Άλλες Συσκευές (2) Άμεση προσπέλαση μνήμης (Direct Memory Access, DMA): Προσπέλαση της κύριας μνήμης από έναν ελεγκτή μέσω του διαύλου Όταν η CPU δεν χρησιμοποιεί τον δίαυλο και αυτός είναι ελεύθερος Π.χ. Αν η CPU πρέπει να μεταφέρει δεδομένα από τον σκληρό δίσκο στην μνήμη: Η CPU στέλνει τη σχετική εντολή στον ελεγκτή του σκληρού δίσκου. Μετά συνεχίζει με κάποια άλλη λειτουργία, ενώ ο ελεγκτής μεταφέρει τα δεδομένα απευθείας στην μνήμη (DMA) Οι υπολογιστικοί πόροι της CPU δεν ξοδεύονται κατά τη διάρκεια της (αργής) μεταφοράς δεδομένων 37
Επικοινωνία με Άλλες Συσκευές (3) Συμφόρηση Von Neumann: Η ανεπαρκής ταχύτητα διαύλου παρακωλύει την απόδοση Ο δίαυλος είναι ένα κοινό μέσο που χρησιμοποιείται για επικοινωνία CPU-μνήμης, CPU-ελεγκτών, ελεγκτών-μνήμης Αρχιτεκτονική Von Neumann: η CPU φέρνει τις εντολές από την μνήμη μέσω του διαύλου Χειραψία (handshake): Η διαδικασία συντονισμού της μεταφοράς δεδομένων μεταξύ των διαφόρων στοιχείων με διαδοχική ανταλλαγή πληροφορίας 38
Επικοινωνία με Άλλες Συσκευές (4) Παράλληλη επικοινωνία: Πολλές διαδρομές επικοινωνίας μεταφέρουν bits ταυτόχρονα Σειριακή επικοινωνία: Τα bits μεταφέρονται το ένα μετά το άλλο μέσω μιας μοναδικής διαδρομής επικοινωνίας. Π.χ. USB, FireWire, Ethernet Σειριακή επικοινωνία σε μακρινές αποστάσεις: Mo-dem (modulator-demodulator): Μετατροπή των bits σε τόνους (ακουστικές συχνότητες), μεταφορά τους πάνω από καλώδιο, επαναμετατροπή τόνων σε bits στον προορισμό Digital Subscriber Line (DSL) 39
Ρυθμοί Επικοινωνίας Ταχύτητα μεταφοράς πληροφορίας (μεταξύ στοιχείων εντός του ίδιου υπολογιστή, ή μεταξύ διαφορετικών υπολογιστών) Μονάδα πληροφορίας: bit Μονάδες μέτρησης Bps: bits ανά δευτερόλεπτο Kbps: Kilo-bps (1,000 bps) Mbps: Mega-bps (1,000,000 bps) Gbps: Giga-bps (1,000,000,000 bps) Εύρος ζώνης (bandwidth): Μέγιστη διαθέσιμη ταχύτητα Σχετίζεται με τη φέρουσα συχνότητα (carrier frequency) και με το πλήθος συχνοτήτων του τηλεπικοινωνιακού διαύλου Δίκτυα ευρείας ζώνης (broadband) 40
Άλλες αρχιτεκτονικές Διεκπεραιωτική ικανότητα ή ρυθμοαπόδοση (throughput): συνολικό ποσό εργασίας που μπορεί να εκτελέσει ένας υπολογιστής σε ένα συγκεκριμένο χρονικό διάστημα Ή, ρυθμός διεκπεραίωσης (αριθμός εργασιών που διεκπεραιώνονται ανά μονάδα χρόνου), π.χ. Εργασίες / sec Τεχνολογίες για αύξηση της διεκπεραιωτικής ικανότητας: βασίζονται στον παραλληλισμό Διαφορετικοί βαθμοί παραλληλισμού σε επίπεδο εντολής: διοχέτευση (pipelining): αλληλοεπικάλυψη βημάτων του κύκλου μηχανής (π.χ. ενώ εκτελείται μια εντολή Α, η επόμενη εντολή Β μεταφέρεται από την μνήμη προς εκτέλεση) παράλληλη εκτέλεση ολόκληρων νημάτων (threads) = τμημάτων ενός προγράμματος που μπορούν να εκτελεστούν παράλληλα (είναι ανεξάρτητα) 41
Διοχέτευση Διοχέτευση (pipelining)= αλληλοεπικάλυψη βημάτων του κύκλου μηχανής Βασική διοχέτευση 5 βημάτων σε μια μηχανή τύπου RISC IF = Instruction Fetch, ID = Instruction Decode, EX = Execute, MEM = Memory access, WB = Register write back Στον 4 ο κύκλο, η πρώτη εντολή είναι στο στάδιο MEM, και η τελευταία δεν έχει μπει στο pipeline 42
Παραλληλισμός σε επίπεδο νημάτων (thread) Σε διαφορετική κλίμακα: Ένας διακομιστής μπορεί να εξυπηρετεί κάθε πελάτη με διαφορετικό νήμα (π.χ. Web server, database server) Ένα εξάρτημα στον υπολογιστή μπορεί να κάνει υπολογισμούς AI, γραφικά και φυσική σε 3 παράλληλα threads Πολυ-πύρηνες (Multi-core) αρχιτεκτονικές: χρησιμοποιούν εκτενώς παραλληλισμό σε επίπεδο νημάτων 43
Πολυεπεξεργαστές Νέα τεχνολογία: Πολυ-πύρηνοι μικροεπεξεργαστές (multi-core microprocessors) Περισσότεροι του ενός επεξεργαστές ανά τσιπ Απαιτεί ρητό παράλληλο προγραμματισμό (explicitly parallel programming) Το υλικό εκτελεί πολλές εντολές ταυτόχρονα Χρησιμοποιούνται εκτενώς τα νήματα Μεγάλες δυσκολίες στον προγραμματισμό multi-core Προγραμματισμός (scheduling) για μέγιστη απόδοση Εξισορρόπηση φορτίου (load balancing) μεταξύ των επεξεργαστών Βελτιστοποίηση επικοινωνίας (communication) και συγχρονισμού (synchronization) 44
Μονο-πύρηνος (single-core) υπολογιστής Τα επόμενα slides απο http://www-bcf.usc.edu/~jbarbic/multi-core-15213-sp07.ppt 45
Πολυ-πύρηνες αρχιτεκτονικές Core 1 Core 2 Core 3 Core 4 Σημ: Όλοι οι πυρήνες μοιράζονται την ίδια μνήμη Multi-core CPU chip 46
Πολυ-πύρηνοι υπολογιστές Δύσκολο τεχνολογικά να αυξηθεί περαιτέρω η συχνότητα του ρολογιού Το ρολόι (clock) είναι ένας ταλαντωτής παράγει παλμούς με συγκεκριμένη συχνότητα, π.χ. 3.6GHz 1 Hz = 1 κύκλος / δευτερόλεπτο Συντονίζει τις εργασίες που επιτελούνται στον υπολογιστή Προβλήματα υπερθέρμανσης καθώς αυξάνεται η συχνότητα του ρολογιού Πολλές νέες εφαρμογές είναι εκ κατασκευής πολλαπλών νημάτων (multi-threaded) Γενική τάση στην αρχιτεκτονική υπολογιστών (στροφή προς περισσότερο παραλληλισμό) 47
Παράλληλες αρχιτεκτονικές Παράλληλη επεξεργασία: ταυτόχρονη χρήση πολλών επεξεργαστών SISD: Καμία παράλληλη επεξεργασία SIMD: Ίδια ακολουθία εντολών, διαφορετικά σύνολα δεδομένων (π.χ. Μοντέρνες κάρτες γραφικών) Κάθε επεξεργαστης εκτελεί την ίδια εργασία με διαφορετικό μέρος των δεδομένων MIMD: Διαφορετικές ακολουθίες εντολών, διαφορετικά σύνολα δεδομένων (multi-core) Κάθε επεξεργαστής εκτελεί ανεξάρτητες και διαφορετικές εργασίες SI: single instruction MI: multiple instruction SD: single data MD: multiple data 48