Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 3 Αριθμητική Υπολογιστών Όγδοη (8 η ) δίωρη διάλεξη. Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση: Καθ. Εφαρμογών Νικόλαος Πετράκης, Τμήματος Ηλεκτρονικών Μηχανικών του Τ.Ε.Ι. Κρήτης. Τελευταία τροποποίηση: 2017-2018 εαρινό εξάμηνο.
Κινητή υποδιαστολή (Floating Point) Αναπαράσταση πραγματικών (μη ακέραιων) αριθμών Συμπεριλαμβάνοντας πολύ μικρούς και πολύ μεγάλους αριθμούς Όπως η επιστημονική σημειογραφία 2.34 10 56 +0.002 10 4 +987.02 10 9 Στο δυαδικό κανονικοποιημένος (normalized) -μόνο ένα ψηφίο αριστερά της υποδιαστολής και όχι μηδέν μη κανονικοποιημένοι (not normalized) ±1.xxxxxxx 2 2 yyyy Οι τύποι δεδομένων float και double στην C Chapter 3 Arithmetic for Computers 2
Το πρότυπο κινητής υποδιαστολής Ορίστηκε από την IEEE ως Std 754-1985 Αναπτύχθηκε για να αντιμετωπίσει την απόκλιση μεταξύ των απεικονίσεων Προβλήματα φορητότητας σε επιστημονικά προγράμματα (scientific code) Έχει υιοθετηθεί παγκοσμίως Δύο απεικονίσεις (αναπαραστάσεις) Απλής ακρίβειας στα 32 bit (Single precision) Διπλής ακρίβειας στα 64 bit (Double precision) Chapter 3 Arithmetic for Computers 3
IEEE Floating-Point Format single: 8 bits single: 23 bits double: 11 bits double: 52 bits S Εκθέτης (Exponent) Κλάσμα (Fraction) 1 bit x = ( 1) S (1+ Fraction) 2 (Exponent Bias) S: πρόσημο (sign) (0 μη αρνητικό, 1 αρνητικό) Κανονικοποίηση σημαντικού (significand): 1.0 significand < 2.0 Στους κανονικοποιημένους αριθμούς υπάρχει πάντα ένα δυαδικό ψηφίο αριστερά της υποδιαστολής με τιμή 1, άρα δεν χρειάζεται να το δείξουμε ρητά, υπονοείται (γι αυτό το λέμε implicit ή hidden bit) Το σημαντικό (Significand) είναι το κλάσμα (Fraction) μαζί με το 1. Ο εκθέτης απεικονίζεται σε πολωμένη σημειογραφία (biased notation), δηλ: ο πραγματικός εκθέτης προσαυξημένος με την πόλωση (Bias) Εξασφαλίζει ότι ο εκθέτης θα είναι απρόσημος Στην απλή ακρίβεια: Bias = 127, ενώ στην διπλή: Bias = 1023 Chapter 3 Arithmetic for Computers 4
Εύρος απλής ακρίβειας Οι εκθέτες 00000000 και 11111111 είναι δεσμευμένοι (reserved) Η μικρότερη τιμή Εκθέτης : 00000001 πραγματικός εκθέτης = 1 127 = 126 Κλάσμα : 000 00 σημαντικό = 1.0 ±1.0 2 126 ±1.2 10 38 Η μεγαλύτερη τιμή Εκθέτης : 11111110 πραγματικός εκθέτης = 254 127 = +127 Κλάσμα : 111 11 σημαντικό 2.0 ±2.0 2 +127 ±3.4 10 +38 Chapter 3 Arithmetic for Computers 5
Εύρος διπλής ακρίβειας Οι εκθέτες 0000 00 και 1111 11 δεσμευμένοι Η μικρότερη τιμή Εκθέτης : 00000000001 πραγματικός εκθέτης = 1 1023 = 1022 Κλάσμα : 000 00 σημαντικό = 1.0 ±1.0 2 1022 ±2.2 10 308 Η μεγαλύτερη τιμή Εκθέτης : 11111111110 πραγματικός εκθέτης = 2046 1023 = +1023 Κλάσμα : 111 11 significand 2.0 ±2.0 2 +1023 ±1.8 10 +308 Chapter 3 Arithmetic for Computers 6
Ακρίβεια κινητής υποδιαστολής Σχετική ακρίβεια (Relative precision) Όλα τα δυαδικά ψηφία του κλάσματος είναι σημαντικά Απλή ακρίβεια : περίπου 2 23 (με το κρυμμένο 2 24 ) Ισοδύναμο με το 23 log 10 2 23 0.3 6 με 7 δεκαδικά ψηφία ακρίβεια Διπλή ακρίβεια : περίπου 2 52 (με το κρυμμένο 2 53 ) Ισοδύναμο με το 52 log 10 2 52 0.3 15 με 16 δεκαδικά ψηφία ακρίβεια Chapter 3 Arithmetic for Computers 7
Παράδειγμα κινητής υποδιαστολής Αναπαράσταση του 0,75 0,75 = ( 1) 1 1,1 2 2 1 Πρόσημο (S) = 1 Κλάσμα (Fraction) = 1000 00 2 Εκθέτης (Exponent) = 1 + πόλωση (Bias) Single : 1 + 127 = 126 = 01111110 2 Double : 1 + 1023 = 1022 = 01111111110 2 Single :1011111101000 00 Double :1011111111101000 00 Chapter 3 Arithmetic for Computers 8
Παράδειγμα κινητής υποδιαστολής Ποιος αριθμός είναι απεικονισμένος σε κινητή υποδιαστολή απλή ακρίβεια 11000000101000 00 Πρόσημο (S) = 1 Κλάσμα (Fraction) = 01000 00 2 Εκθέτης (Exponent) = 10000001 2 = 129 x = ( 1) 1 (1 + 0,01 2 ) 2 (129 127) = ( 1) 1,25 2 2 = 5,0 Chapter 3 Arithmetic for Computers 9
Μη κανονικοποιημένοι (denormal) αριθμοί Εκθέτης = 000...0 το υπονοούμενο (implicit) bit είναι 0 x = ( 1) S (0+ Fraction) 2 Bias Μικρότερος από τους κανονικούς (normal) αριθμούς Επιτρέπει σταδιακή (gradual) ανεπάρκεια (underflow), με μειωμένη ακρίβεια Όταν το κλάσμα είναι = 000...0 τότε x = ( 1) S (0+ 0) 2 Bias = 0.0 Δύο απεικονίσεις του 0.0! Chapter 3 Arithmetic for Computers 10
Άπειρο και όχι-αριθμός (NaN) Εκθέτης = 111...1, κλάσμα = 000...0 ± Άπειρο Μπορεί να χρησιμοποιηθεί στους επακόλουθους υπολογισμούς, αποφεύγοντας την ανάγκη για έλεγχο υπερχείλισης Εκθέτης = 111...1, Κλάσμα 000...0 Όχι αριθμός {Not-a-Number (NaN)} Δείχνει εσφαλμένο ή αόριστο αποτέλεσμα π.χ., 0,0 / 0,0 Μπορεί να χρησιμοποιηθεί στους επακόλουθους υπολογισμούς Chapter 3 Arithmetic for Computers 11
Κωδικοποίηση IEEE-754 αριθμών Κ.Υ. Απλή Ακρίβεια Διπλή Ακρίβεια Εκθέτης Κλάσμα Εκθέτης Κλάσμα Αναπαριστώμενο αντικείμενο 0 0 0 0 μηδέν (0) 0 μη μηδενικό 0 μη μηδενικό 1 254 οτιδήποτε 1 2046 οτιδήποτε +/- μη κανονικοποιημένος αριθμός +/- αριθμός κινητής υποδιαστολής 255 0 2047 0 +/- άπειρο 255 μη μηδενικό 2047 μη μηδενικό NaN (Not a Number = όχι αριθμός) Chapter 3 Arithmetic for Computers 12
Πρόσθεση σε κινητή υποδιαστολή Θεωρείστε ένα παράδειγμα στο δεκαδικό τετραψήφιο 9,999 10 1 + 1,610 10 1 1. Στοίχιση (ευθυγράμμιση) των υποδιαστολών Ολισθαίνοντας τον αριθμό με τον μικρότερο εκθέτη 9,999 10 1 + 0,016 10 1 2. Πρόσθεση σημαντικών 9,999 10 1 + 0,016 10 1 = 10,015 10 1 3. Κανονικοποίηση αποτελέσματος και έλεγχος για υπερχείλιση (overflow) ή ανεπάρκεια (underflow) 1,0015 10 2 4. Στρογγυλοποίηση και αν χρειαστεί κανονικοποίηση εκ νέου 1,002 10 2 Chapter 3 Arithmetic for Computers 13
Πρόσθεση σε κινητή υποδιαστολή(κ.υ.) Τώρα θεωρείστε ένα τετραψήφιο δυαδικό παράδειγμα 1,000 2 2 1 + ( 1,110 2 2 2 ) // (0,5 + ( 0,4375)) 1. Στοίχιση υποδιαστολών Ολίσθηση του αριθμού με τον μικρότερο εκθέτη 1,000 2 2 1 + ( 0,111 2 2 1 ) 2. Πρόσθεση σημαντικών 1,000 2 2 1 + ( 0,111 2 2 1 ) = 0,001 2 2 1 3. Κανονικοποίηση αποτελέσματος και έλεγχος για υπερχείλιση ή ανεπάρκεια 1,000 2 2 4, δεν εμφανίστηκε over/underflow 4. Στρογγυλοποίηση και κανονικοποίηση εκ νέου εάν απαιτείται 1,000 2 2 4 (χωρίς αλλαγή) // 0,0625 Chapter 3 Arithmetic for Computers 14
Υλικό πρόσθεσης Κ.Υ. Πολύ πιο πολύπλοκο σε σύγκριση με τον αθροιστή ακεραίων Εκτελώντας την λειτουργία σε ένα κύκλο θα διαρκούσε πάρα πολύ Πολύ περισσότερο από όσο διαρκούν οι πράξεις με ακεραίους Βραδύτερο ρολόι θα επιβάρυνε όλες τις εντολές Ο αθροιστής Κ.Υ. συνήθως χρειάζεται κάμποσους κύκλους ρολογιού Μπορεί να υλοποιηθεί με διοχέτευση (pipeline) Chapter 3 Arithmetic for Computers 15
Διάγραμμα Πρόσθεσης Κ.Υ. Έναρξη 1. Σύγκριση εκθετών των δύο αριθμών. Ολίσθηση του μικρότερου αριθμού προς τα δεξιά μέχρι ο εκθέτης του να ταιριάζει με τον μεγάλο εκθέτη 2. Πρόσθεση των σημαντικών 3. Κανονικοποίηση του αθροίσματος, είτε με δεξιά ολίσθηση και αύξηση του εκθέτη, είτε με αριστερή ολίσθηση και μείωση του εκθέτη Υπερχείλιση ή ανεπάρκεια; Ναι Όχι 4. Στρογγυλοποίηση του σημαντικού στον κατάλληλο αριθμό bit Εξαίρεση Όχι Παραμένει κανονικοποιημένος; Ναι Τέλος Chapter 3 Arithmetic for Computers 16
Υλικό αθροιστή Κ.Υ. Βήμα 1 Βήμα 2 Βήμα 3 Βήμα 4 Chapter 3 Arithmetic for Computers 17