Chapter 3 Αριθμητική Υπολογιστών (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση: Καθ. Εφαρμογών Νικόλαος Πετράκης, Τμήματος Ηλεκτρονικών Μηχανικών του Τ.Ε.Ι. Κρήτης. Τελευταία τροποποίηση: 2014-2015 χειμερινό εξάμηνο.
Πολλαπλασιασμός Κ.Υ. Θεωρείστε ένα παράδειγμα με τέσσερα δεκαδικά ψηφία 1,110 10 10 9,200 10 5 1. Πρόσθεση εκθετών Για εκθέτες σε πολωμένη σημειογραφία, αφαιρέστε την πόλωση από το άθροισμα Νέος εκθέτης = 10 + ( 5) = 5 2. Πολλαπλασιασμός σημαντικών 1,110 9,200 = 10,212 10,212 10 5 3. Κανονικοποίηση αποτελέσματος και έλεγχος για υπερχείλιση ή ανεπάρκεια 1,0212 10 6 4. Στρογγυλοποίηση και κανονικοποίηση εκ νέου αν χρειαστεί 1,021 10 6 5. Καθορισμός του προσήμου του αποτελέσματος από τα πρόσημα των τελεστέων +1,021 10 6 Chapter 3 Arithmetic for Computers 2
Πολλαπλασιασμός Κ.Υ. Τώρα θεωρείστε ένα τετραψήφιο δυαδικό παράδειγμα 1,000 2 2 1 ( 1,110 2 2 2 ) // (0,5 0,4375) 1. πρόσθεση εκθετών Χωρίς πόλωση : 1 + 2 = 3 Με πόλωση : ( 1 + 127) + ( 2 + 127) = 3 + 254 127 = 3 + 127 2. Πολλαπλασιασμός σημαντικών 1,000 2 1,110 2 = 1,110 2 1,110 2 2 3 3. Κανονικοποίηση αποτελέσματος και έλεγχος για υπερχείλιση και ανεπάρκεια 1,110 2 2 3 (χωρίς αλλαγή) όχι υπερχείλιση ούτε ανεπάρκεια 4. Στρογγυλοποίηση και κανονικοποίηση εκ νέου αν χρειαστεί 1,110 2 2 3 (χωρίς αλλαγή) 5. Καθορισμός προσήμου: +ve ve ve 1,110 2 2 3 = 0,21875 Chapter 3 Arithmetic for Computers 3
Διάγραμμα Πολλαπλασιασμού Κ.Υ. Chapter 3 Arithmetic for Computers 4
Υλικό αριθμητικής Κ.Υ. Το κύκλωμα πολλαπλασιασμού σε Κ.Υ. είναι παρόμοιας πολυπλοκότητας με το κύκλωμα πρόσθεσης σε Κ.Υ. Αλλά χρησιμοποιεί έναν πολλαπλασιαστή για τους σημαντικούς (significands) αντί ενός αθροιστή Το υλικό αριθμητικής Κ.Υ. συνήθως κάνει Πρόσθεση (addition), αφαίρεση (subtraction), πολλαπλασιασμό (multiplication), διαίρεση (division), αντίστροφο (reciprocal), τετραγωνική ρίζα (square-root) Μετατροπή από Κ.Υ. σε ακέραιο και το ανάποδο Οι εντολές συνήθως απαιτούν αρκετούς κύκλους Μπορούν να υλοποιηθούν με διοχέτευση (pipeline) Chapter 3 Arithmetic for Computers 5
Εντολές Κ.Υ. στον MIPS Το υλικό Κ.Υ. είναι ο συνεπεξεργαστής (coprocessor) 1 Βοηθητικός επεξεργαστής που επεκτείνει το ISA Ξεχωριστοί καταχωρητές Κ.Υ. 32 απλής ακρίβειας : $f0, $f1, $f2, $f3, $f4,, $f31 Ζευγαρωμένοι για διπλή ακρίβεια : $f0/$f1, $f2/$f3,, $f30/$f31 Η 2 η έκδοση της αρχιτεκτονικής του MIPS υποστηρίζει 32 64-bit FP registers Οι εντολές Κ.Υ. λειτουργούν μόνο πάνω σε καταχωρητές Κ.Υ. Τα προγράμματα γενικά δεν εκτελούν πράξεις ακεραίων σε δεδομένα Κ.Υ. ούτε το ανάποδο Περισσότεροι καταχωρητές με ελάχιστο αντίκτυπο στο μέγεθος κώδικα (More registers with minimal code-size impact) Οι ενολές Κ.Υ. φόρτωσης και αποθήκευσης lwc1, ldc1, swc1, sdc1 π.χ., ldc1 $f8, 32($sp) Chapter 3 Arithmetic for Computers 6
Εντολές Κ.Υ. στον MIPS Αριθμητική απλής ακρίβειας add.s, sub.s, mul.s, div.s π.χ., add.s $f0, $f1, $f6 $f0 <= $f1 + $f6 Αριθμητική διπλής ακρίβειας add.d, sub.d, mul.d, div.d π.χ., mul.d $f4, $f4, $f6 $f4/$f5 <= $f4/$f5 $f6/$f7 Σύγκριση απλής και διπλής ακρίβειας c.xx.s, c.xx.d (αντί του xx βάζουμε eq, lt, le, ) Θέτει ή επαναφέρει το FP condition-code bit π.χ. c.lt.s $f3, $f4 (coprocessor 1(FP) condition flag 0) Διακλάδωση υπό συνθήκη (Branch on FP condition code true or false) bc1t, bc1f π.χ., bc1t TargetLabel Υπάρχουν συνολικά 8 condition flag Πχ c.eq.d 4 $f8, $f10 bc1f 4 label για την θέση του condition flag 4. Chapter 3 Arithmetic for Computers 7
Συμφωνία χρήσης για τους καταχωρητές K.Y. Ονόματα Χρήση κατά την κλήση διαδικασιών $f0 - $f2 Επιστροφή αποτελεσμάτων κινητής υποδιαστολής από διαδικασία. (Floating point procedure results) $f4 - $f10 Προσωρινοί καταχωρητές κινητής υποδιαστολής (Temporary floating point registers). Δεν διατηρούνται κατά τις κλήσεις διαδικασιών. $f12 - $f14 Τα πρώτα δύο ορίσματα σε κινητή υποδιαστολή. (The first two floating point parameters) Δεν διατηρούνται κατά τις κλήσεις διαδικασιών. $f16 - $f18 Προσωρινοί καταχωρητές κινητής υποδιαστολής. Δεν διατηρούνται κατά τις κλήσεις διαδικασιών. $f20 - $f30 Αποθηκευμένοι καταχωρητές κινητής υποδιαστολής. (Saved floating point registers). Διατηρούνται κατά τις κλήσεις διαδικασιών. Αν πρόκειται για διπλή ακρίβεια υπονοείται και το ζευγάρι τους. Chapter 3 Arithmetic for Computers 8
Παράδειγμα Κ.Υ.: βαθμοί F σε C Κώδικας σε C : float f2c (float fahr) { return ((5.0/9.0)*(fahr - 32.0)); } Όπου το fahr είναι στο $f12, το αποτέλεσμα στο $f0, και οι σταθερές (literals) στον χώρο της καθολικής μνήμης (global memory space) Μεταγλωττισμένος κώδικας MIPS : f2c: lwc1 $f16, const5($gp) lwc1 $f18, const9($gp) div.s $f16, $f16, $f18 lwc1 $f18, const32($gp) sub.s $f18, $f12, $f18 mul.s $f0, $f16, $f18 jr $ra Chapter 3 Arithmetic for Computers 9
2 ο παράδειγμα Κ.Υ.: Πολλα/σμός Πινάκων X = X + Y Z Κώδικας σε C : Είναι όλοι πίνακες, 32 32, με στοιχεία πραγματικούς διπλής ακρίβειας (64 bits) void mm (double x[][32], double y[][32], double z[][32]) { int i, j, k; for (i = 0; i < 32; i = i + 1) for (j = 0; j < 32; j = j + 1) for (k = 0; k < 32; k = k + 1) x[i][j] = x[i][j] + y[i][k] * z[k][j]; } Οι διευθύνσεις των x, y και z είναι στους $a0, $a1 και $a2, ενώ τα i, j και k μπορούν να αποθηκευτούν στους $t0, $t1 και $t2. Για το σπίτι! Chapter 3 Arithmetic for Computers 10
Ακριβής αριθμητική (Accurate Arithmetic) Το πρότυπο IEEE Std 754 καθορίζει επιπλέον έλεγχο στρογγυλοποίησης Επιπρόσθετα δυαδικά ψηφία ακρίβειας (guard, round, sticky) Επιλογή του τρόπου στρογγυλοποίησης Επιτρέπει στον προγραμματιστή να κάνει λεπτούς χειρισμούς ως προς την αριθμητική συμπεριφορά ενός υπολογισμού (Allows programmer to fine-tune numerical behavior of a computation) Δεν υλοποιούν όλες οι μονάδες Κ.Υ. όλες τις επιλογές Οι πλειοψηφία των γλωσσών προγραμματισμού και των βιβλιοθηκών Κ.Υ. just use defaults Συμβιβασμός μεταξύ πολυπλοκότητας υλικού, απόδοσης (performance), και απαιτήσεων αγοράς (market requirements) Chapter 3 Arithmetic for Computers 14
Ερμηνεία Δεδομένων (Interpretation of Data) Η μεγάλη Εικόνα (The BIG Picture) Τα δυαδικά ψηφία δεν έχουν κάποια έμφυτη ερμηνεία (Bits have no inherent meaning) Η ερμηνεία εξαρτάται από τις εντολές που εφαρμόζονται (Interpretation depends on the instructions applied) Υπολογιστική αναπαράσταση αριθμών (Computer representations of numbers) Πεπερασμένο εύρος και ακρίβεια (Finite range and precision) Απαιτείται να το λαμβάνουμε υπόψη μας στα προγράμματα (Need to account for this in programs) Chapter 3 Arithmetic for Computers 15
Ποιος ενδιαφέρεται για ακρίβεια στην Κ.Υ. ; Είναι καθοριστικής σημασίας σε επιστημονικούς υπολογισμούς (scientific code) Αλλά στην καθημερινότητα των καταναλωτών ; My bank balance is out by 0.0002! Το σφάλμα στον Intel Pentium FDIV Η αγορά περιμένει ακρίβεια See Colwell, The Pentium Chronicles Chapter 3 Arithmetic for Computers 21
Συμπερασματικά σχόλια ή Συμπερασματικές παρατηρήσεις Οι αρχιτεκτονικές συνόλου εντολών (ISAs) υποστηρίζουν αριθμητική: Προσημασμένων και απρόσημων ακεραίων Προσεγγίσεων κινητής υποδιαστολής πραγματικών αριθμών Πεπερασμένο εύρος (Bounded range) και ακρίβεια (precision) Κατά την εκτέλεση των πράξεων μπορεί να εμφανιστεί υπερχείλιση (overflow) ή ανεπάρκεια (underflow) Αρχιτεκτονική συνόλου εντολών MIPS Εντολές πυρήνα (core instructions): Οι 54 πιο συχνά χρησιμοποιούμενες 100% of SPECINT, 97% of SPECFP Άλλες εντολές : λιγότερο συχνές Chapter 3 Arithmetic for Computers 22