COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1....

38
Κεφάλαιο 3 Αριθμητική για υπολογιστές

Transcript of COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1....

Page 1: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3

Αριθμητική για

υπολογιστές

Page 2: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 2

Αριθμητική για υπολογιστές

Λειτουργίες (πράξεις) σε ακεραίους

Πρόσθεση και αφαίρεση

Πολλαπλασιασμός και διαίρεση

Χειρισμός της υπερχείλισης

Πραγματικοί αριθμοί κινητής υποδιαστολής

(floating-point)

Αναπαράσταση και λειτουργίες (πράξεις)

§3.1

Εισ

αγω

γή

Page 3: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 3

Ακέραια πρόσθεση

Παράδειγμα: 7 + 6

§3.2

Πρ

όσ

θεσ

η κ

αι α

φα

ίρεσ

η

Υπερχείλιση (overflow) αν το αποτέλεσμα είναι

εκτός του εύρους των τιμών

Πρόσθεση ετερόσημων τελεστέων, όχι υπερχείλιση

Πρόσθεση θετικών τελεστέων

Υπερχείλιση αν το πρόσημο του αποτελέσματος είναι 1

Πρόσθεση αρνητικών τελεστέων

Υπερχείλιση αν το πρόσημο του αποτελέσματος είναι 0

Page 4: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 4

Ακέραια αφαίρεση

Πρόσθεση του αντιθέτου του δεύτερου τελεστέου

Παράδειγμα: 7 – 6 = 7 + (–6) +7: 0000 0000 … 0000 0111

–6: 1111 1111 … 1111 1010 +1: 0000 0000 … 0000 0001

Υπερχείλιση αν το αποτέλεσμα είναι εκτός του εύρους των τιμών Αφαίρεση δύο θετικών ή δύο αρνητικών, όχι

υπερχείλιση

Αφαίρεση θετικού από αρνητικό τελεστέο Υπερχείλιση αν το πρόσημο του αποτελέσματος είναι 0

Αφαίρεση αρνητικού από θετικό τελεστέο Υπερχείλιση αν το πρόσημο του αποτελέσματος είναι 1

Page 5: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 5

Χειρισμός της υπερχείλισης

Μερικές γλώσσες (π.χ., C) αγνοούν την υπερχείλιση Χρησιμοποιούν τις εντολές του MIPS addu, addui, subu

Άλλες γλώσσες (π.χ., Ada, Fortran) απαιτούν τη δημιουργία μιας εξαίρεσης Χρησιμοποιούν τις εντολές του MIPS add, addi, sub

Στην υπερχείλιση, καλείται ο χειριστής εξαιρέσεων Αποθήκευση του PC στο μετρητή προγράμματος εξαιρέσεων

(exception program counter – EPC)

Άλμα στην προκαθορισμένη διεύθυνση του χειριστή

Η εντολή mfc0 (move from coprocessor reg) μπορεί να ανακτήσει την τιμή του EPC, για να γίνει επιστροφή μετά τη διορθωτική ενέργεια

Page 6: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 6

Πολλαπλασιασμός

Ξεκινάμε με τον πολ/σμό μεγάλου μήκους

1000 × 1001 1000 0000 0000 1000 1001000

Το μήκος του γινομένου

είναι το άθροισμα των

μηκών των τελεστέων

πολλαπλασιαστέος

πολλαπλασιαστής

γινόμενο

§3.3

Πολλα

πλα

σια

σμ

ός

Page 7: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 7

Υλικό πολλαπλασιασμού

Αρχικά 0

Page 8: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 8

Βελτιστοποιημένος πολλαπλασιαστής

Εκτέλεση βημάτων παράλληλα: πρόσθεση/ολίσθηση

Ένας κύκλος ανά πρόσθεση μερικού γινομένου

Είναι εντάξει, αν η συχνότητα εμφάνισης του

πολλαπλασιασμού είναι χαμηλή

Page 9: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 9

Ταχύτερος πολλαπλασιαστής

Χρησιμοποιεί πολλούς αθροιστές

Συμβιβασμός κόστους/απόδοσης

Μπορεί να υλοποιηθεί με διοχέτευση (pipeline)

Πολλοί πολλαπλασιασμοί εκτελούνται παράλληλα

Page 10: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 10

Πολλαπλασιασμός στον MIPS

Δύο καταχωρητές των 32 bit για το γινόμενο

HI: τα περισσότερο σημαντικά 32 bit

LO: τα λιγότερο σημαντικά 32 bit

Εντολές

mult rs, rt / multu rs, rt

γινόμενο των 64 bit στους HI/LO

mfhi rd / mflo rd

Μεταφορά από (move from) του HI/LO στον rd

Μπορούμε να ελέγξουμε τη τιμή του HI για να δούμε αν το

γινόμενο ξεπερνά τα 32 bit

mul rd, rs, rt

Τα λιγότερο σημαντικά 32 bit του γινομένου –> rd

Page 11: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 11

Διαίρεση

Έλεγχος για μηδενικό διαιρέτη

Διαίρεση μεγάλου μήκους Αν διαιρέτης ≤ από τα bit του

διαιρετέου 1 bit στο πηλίκο, αφαίρεση

Αλλιώς 0 bit στο πηλίκο, κατέβασμα του

επόμενου bit του διαιρετέου

Διαίρεση με επαναφορά (restoring division) Κάνε την αφαίρεση και αν το υπόλοιπο

γίνει < 0, πρόσθεσε πίσω το διαιρέτη

Προσημασμένη διαίρεση Κάνε τη διαίρεση με τις απόλυτες τιμές

Ρύθμισε το πρόσημο του πηλίκου και του υπολοίπου όπως απαιτείται

1001 1000 1001010 -1000 10 101 1010 -1000 10

τελεστέοι των n bit δίνουν

πηλίκο και υπόλοιπο των n bit

πηλίκο

διαιρετέος

υπόλοιπο

διαιρέτης

§3.4

Δια

ίρεσ

η

Page 12: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 12

Υλικό διαίρεσης

Αρχικά περιέχει

το διαιρετέο

Αρχικά ο

διαιρέτης στο

αριστερό μισό

Page 13: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 13

Βελτιστοποιημένος διαιρέτης

Ένας κύκλος για κάθε αφαίρεση μερικού υπολοίπου

Μοιάζει πολύ με πολλαπλασιαστή! Το ίδιο υλικό μπορεί να χρησιμοποιηθεί και για τις δύο πράξεις

Page 14: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 14

Ταχύτερη διαίρεση

Δεν μπορεί να χρησιμοποιηθεί παράλληλο

υλικό όπως στον πολλαπλασιαστή

Η αφαίρεση εκτελείται υπό συνθήκη, ανάλογα

με το πρόσημο του υπολοίπου

Ταχύτεροι διαιρέτες (π.χ. διαίρεση SRT)

δημιουργούν πολλά bit του πηλίκου σε

κάθε βήμα

Και πάλι απαιτούνται πολλά βήματα

Page 15: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 15

Διαίρεση στο MIPS

Χρήση των καταχωρητών HI/LO για το

αποτέλεσμα

HI: υπόλοιπο 32 bit

LO: πηλίκο 32 bit

Εντολές

div rs, rt / divu rs, rt

Όχι έλεγχος για υπερχείλιση ή

διαίρεση με το 0

Το λογισμικό πρέπει να εκτελεί τους ελέγχους αν αυτό

απαιτείται

Χρήση των mfhi, mflo για προσπέλαση του

αποτελέσματος

Page 16: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 16

Κινητή υποδιαστολή

Αναπαράσταση για μη ακεραίους αριθμούς

Περιλαμβάνει και πολύ μικρούς και πολύ μεγάλους

αριθμούς

Όπως η επιστημονική σημειογραφία (scientific

notation)

–2.34 × 1056

+0.002 × 10–4

+987.02 × 109

Σε δυαδικό

±1.xxxxxxx2 × 2yyyy

Οι τύποι float και double της C

κανονικοποιημένος

μη κανονικοποιημένος

§3.5

Κιν

ητή

υπ

οδια

στο

λή

Page 17: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 17

Πρότυπο κινητής υποδιαστολής

Ορίζεται από το IEEE Std 754-1985

Αναπτύχθηκε ως λύση στην απόκλιση των αναπαραστάσεων

Ζητήματα φορητότητας (portability) για τον κώδικα επιστημονικών εφαρμογών

Πλέον είναι σχεδόν οικουμενικά αποδεκτό

Δύο αναπαραστάσεις κινητής υποδιαστολής (floating point)

Απλή ακρίβεια – single precision (32 bit)

Διπλή ακρίβεια – double precision (64 bit)

Page 18: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 18

Μορφή κινητής υποδιαστολής IEEE

Εκθέτης (exponent) – Κλάσμα (fraction)

S: bit προσήμου (0 μη αρνητικός, 1 αρνητικός)

Κανονικοποίηση του σημαντικού (significand): 1.0 ≤ |significand| < 2.0 Έχει πάντα ένα αρχικό bit 1 πριν την υποδιαστολή, και συνεπώς δε χρειάζεται

ρητή αναπαράστασή του («κρυμμένο» bit)

Το σημαντικό (significand) είναι το κλάσμα (fraction) μαζί με το κρυμμένο “1”

Εκθέτης: αναπαράσταση «με υπέρβαση» (excess): πραγματικός εκθέτης + πόλωση (bias) Εγγυάται ότι ο εκθέτης είναι απρόσημος

Απλή ακρίβεια: Πόλωση = 127 – Διπλή ακρίβεια: Πόλωση = 1023

S Εκθέτης Κλάσμα

single: 8 bit double: 11 bit

single: 23 bit double: 52 bit

Πόλωση) (Εκθέτης S 2 Κλάσμα) (1 1) ( x - + - =

Page 19: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 19

Εύρος απλής ακρίβειας

Οι εκθέτες 00000000 και 11111111 δεσμεύονται

Μικρότερη τιμή

Εκθέτης: 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

Page 20: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 20

Εύρος διπλής ακρίβειας

Οι εκθέτες 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 σημαντικό ≈ 2.0

±2.0 × 2+1023 ≈ ±1.8 × 10+308

Page 21: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 21

Ακρίβεια κινητής υποδιαστολής

Σχετική ακρίβεια

Όλα τα bit του κλάσματος είναι σημαντικά

Απλή: περίπου 2–23

Ισοδύναμο με 23 × log102 ≈ 23 × 0.3 ≈ 6 δεκαδικά

ψηφία ακρίβειας

Διπλή: περίπου 2–52

Ισοδύναμο με 52 × log102 ≈ 52 × 0.3 ≈ 16 δεκαδικά

ψηφία ακρίβειας

Page 22: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 22

Παράδειγμα κινητής υποδιαστολής

Αναπαράσταση του –0.75

–0.75 = (–1)1 × 1.12 × 2–1

S = 1

Κλάσμα = 1000…002

Εκθέτης = –1 + Πόλωση

Απλή: –1 + 127 = 126 = 011111102

Διπλή: –1 + 1023 = 1022 = 011111111102

Απλή: 1011111101000…00

Διπλή: 1011111111101000…00

Page 23: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 23

Παράδειγμα κινητής υποδιαστολής

Ποιος αριθμός αναπαρίσταται από τον απλής ακρίβειας κινητής υποδιαστολής αριθμό;

11000000101000…00

S = 1

Κλάσμα = 01000…002

Εκθέτης = 100000012 = 129

x = (–1)1 × (1 + 012) × 2(129 – 127)

= (–1) × 1.25 × 22

= –5.0

Page 24: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 24

Μη κανονικοποιημένοι (denormals)

Εκθέτης = 000...0 το «κρυμμένο» bit

είναι 0

Μικρότεροι από τους κανονικοποιημένους

επιτρέπουν βαθμιαία ανεπάρκεια (gradual

underflow), με μειούμενη ακρίβεια

Denormal με κλάσμα = 000...0

Δύο αναπαραστάσεις του

0.0!

Πόλωση+1 S 2 Κλάσμα) (0 1) ( x - + - =

0 . 0 = + - = - Πόλωση+1 S 2 0) (0 1) ( x

Page 25: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 25

Άπειρα και όχι αριθμοί (NaN)

Εκθέτης = 111...1, Κλάσμα = 000...0

±Άπειρο

Μπορεί να χρησιμοποιηθεί σε επόμενους

υπολογισμούς, για αποφυγή της ανάγκης του ελέγχου

υπερχείλισης

Εκθέτης = 111...1, Κλάσμα ≠ 000...0

Όχι αριθμός (Not-a-Number – NaN)

Δείχνει ένα άκυρο ή απροσδιόριστο αποτέλεσμα

π.χ., 0.0 / 0.0

Μπορεί να χρησιμοποιηθεί σε επόμενους

υπολογισμούς

Page 26: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 26

Πρόσθεση κινητής υποδιαστολής

Ένα δεκαδικό παράδειγμα με 4 ψηφία 9.999 × 101 + 1.610 × 10–1

1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο εκθέτη

9.999 × 101 + 0.016 × 101

2. Πρόσθεση σημαντικών 9.999 × 101 + 0.016 × 101 = 10.015 × 101

3. Κανονικοποίηση αποτελέσματος & έλεγχος υπερχείλισης/ανεπάρκειας 1.0015 × 102

4. Στρογγυλοποίηση και επανακανονικοποιήση αν είναι απαραίτητο 1.002 × 102

Page 27: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 27

Πρόσθεση κινητής υποδιαστολής

Τώρα ένα δυαδικό παράδειγμα με 4 ψηφία 1.0002 × 2–1 + –1.1102 × 2–2 (0.5 + –0.4375)

1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο εκθέτη

1.0002 × 2–1 + –0.1112 × 2–1

2. Πρόσθεση σημαντικών 1.0002 × 2–1 + –0.1112 × 2–1 = 0.0012 × 2–1

3. Κανονικοποίηση αποτελέσματος και έλεγχος υπερχείλισης/ανεπάρκειας 1.0002 × 2–4, χωρίς υπερχείλιση/ανεπάρκεια

4. Στρογγυλοποίηση και επανακανονικοποιήση αν είναι απαραίτητο 1.0002 × 2–4 (καμία αλλαγή) = 0.0625

Page 28: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 28

Υλικό αθροιστή κιν. υποδ.

Πολύ πιο πολύπλοκο από του ακέραιου αθροιστή

Για να γίνει σε έναν κύκλο πρέπει να έχει πολύ μεγάλη διάρκεια

Πολύ μεγαλύτερη από τις ακέραιες λειτουργίες

Το πιο αργό ρολόι θα επιβάρυνε όλες τις εντολές

Ο αθροιστής κινητής υποδιαστολής συνήθως παίρνει πολλούς κύκλους

Μπορεί να υπολοποιηθεί με διοχέτευση

Page 29: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 29

Υλικό αθροιστή κιν.υποδ.

Βήμα 1

Βήμα 2

Βήμα 3

Βήμα 4

Page 30: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 32

Υλικό αριθμητικής κιν. υποδ.

Ο πολλαπλασιαστής ΚΥ έχει παρόμοια

πολυπλοκότητα με τον αθροιστή ΚΥ

Αλλά χρησιμοποιεί πολλαπλασιαστή για τα σημαντικά

αντί για αθροιστή

Το υλικό αριθμητικής κιν. υποδ. συνήθως εκτελεί

Πρόσθεση, αφαίρεση, πολλαπλασιασμό, διαίρεση,

αντίστροφο, τετραγωνική ρίζα

Μετατροπή ΚΥ ακέραιο

Οι λειτουργίες συνήθως διαρκούν πολλούς

κύκλους

Μπορούν να υπολοποιηθούν με διοχέτευση

Page 31: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 33

Εντολές ΚΥ στο MIPS

Το υλικό ΚΥ είναι ο συνεπεξεργαστής (coprocessor) 1 Επιπρόσθετος επεξεργαστής που επεκτείνει την αρχιτεκτονική

συνόλου εντολών

Ξεχωριστοί καταχωρητές ΚΥ 32 απλής ακρίβειας: $f0, $f1, … $f31

Ζευγάρια για διπλή ακρίβεια: $f0/$f1, $f2/$f3, … Η έκδοση 2 του συνόλου εντολών MIPS υποστηρίζει 32 × 64 bit

καταχωρητές ΚΥ

Εντολές ΚΥ επενεργούν μόνο σε καταχωρητές ΚΥ Γενικά τα προγράμματα δεν εκτελούν ακέραιες πράξεις σε

δεδομένα ΚΥ, ή αντίστροφα

Περισσότεροι καταχωρητές με ελάχιστη επίδραση στο μέγεθος του κώδικα

Εντολές φόρτωσης και αποθήκευσης ΚΥ lwc1, ldc1, swc1, sdc1

π.χ., ldc1 $f8, 32($sp)

Page 32: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 34

Εντολές ΚΥ στον MIPS

Αριθμητική απλής ακρίβειας add.s, sub.s, mul.s, div.s

π.χ., add.s $f0, $f1, $f6

Αριθμητική διπλής ακρίβειας add.d, sub.d, mul.d, div.d

π.χ., mul.d $f4, $f4, $f6

Σύγκριση απλής και διπλής ακρίβειας c.xx.s, c.xx.d (xx είναι eq, lt, le, …)

Δίνει τη τιμή 1 ή 0 σε bit κωδικών συνθήκης ΚΥ (FP condition-code bit)

π.χ. c.lt.s $f3, $f4

Διακλάδωση σε αληθή ή ψευδή κωδικό συνθήκης ΚΥ bc1t, bc1f

π.χ., bc1t TargetLabel

Page 33: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 35

Παραδειγμα ΚΥ: βαθμοί °F σε °C

Κώδικας C: float f2c (float fahr) { return ((5.0/9.0)*(fahr - 32.0)); }

fahr στον $f12, αποτέλεσμα στον $f0, οι σταθερές στο χώρο της καθολικής μνήμης

Μεταγλωττισμένος κώδικας MIPS: f2c: lwc1 $f16, const5($gp) lwc2 $f18, const9($gp) div.s $f16, $f16, $f18 lwc1 $f18, const32($gp) sub.s $f18, $f12, $f18 mul.s $f0, $f16, $f18 jr $ra

Page 34: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Ακριβής αριθμητική

Το IEEE Std 754 καθορίζει πρόσθετο έλεγχο της στρογγυλοποίησης Επιπλέον bit ακρίβειας (guard, round, sticky)

Επιλογή τρόπων στρογγυλοποίησης (rounding modes)

Επιτρέπει στον προγραμματιστή να ρυθμίσει με λεπτομέρεια την αριθμητική συμπεριφορά ενός υπολογισμού

Δεν υλοποιούν όλες τις επιλογές όλες οι μονάδες ΚΥ Οι περισσότερες γλώσσες προγραμματισμού και βιβλιοθήκες ΚΥ

χρησιμοποιούν απλώς τις προκαθορισμένες λειτουργίες

Συμβιβασμός μεταξύ πολυπλοκότητας του υλικού, απόδοσης, και απαιτήσεων της αγοράς

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 36

Page 35: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 37

Διερμηνεία των δεδομένων

Τα bit δεν έχουν έμφυτη σημασία

Η διερμηνεία εξαρτάται από τις εντολές που

εφαρμόζονται

Αναπαράσταση των αριθμών στους

υπολογιστές

Πεπερασμένο εύρος και ακρίβεια

Πρέπει να λαμβάνονται υπόψη στα

προγράμματα

ΓΕΝΙΚΗ εικόνα

Page 36: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 38

Δεξιά ολίσθηση και διαίρεση

Η αριστερή ολίσθηση κατά i θέσεις

πολλαπλασιάζει έναν ακέραιο με 2i

Η δεξιά ολίσθηση διαιρεί με το 2i ;

Μόνο σε απρόσημους ακεραίους

Για προσημασμένους ακεραίους

Αριθμητική δεξιά ολίσθηση: επανάληψη του

προσήμου

π.χ., –5 / 4

111110112 >> 2 = 111111102 = –2

Στρογγυλοποιεί προς το –∞

σύγκριση 111110112 >>> 2 = 001111102 = +62

§3.8

Πλά

νες

κα

ι πα

γίδ

ες

Page 37: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 39

Ποιος νοιάζεται για την ακρίβεια ΚΥ;

Σημαντική για επιστημονικό κώδικα

Αλλά για καθημερινή χρήση;

“Το υπόλοιπό μου στη τράπεζα διαφέρει κατά

0.0002 σεντ!”

Το σφάλμα της διαίρεσης ΚΥ του Intel

Pentium (FDIV bug)

Η αγορά αναμένει ακρίβεια

Δείτε Colwell, The Pentium Chronicles

Page 38: COD4e greek slides - NTUA · 1.000 2 × 2±1 + ±1.110 2 ±× 2 2 (0.5 + ±0.4375) 1. Ευθυγράμμιση υποδιαστολών Ολίσθηση αριθμού με το μικρότερο

Κεφάλαιο 3 — Αριθμητική για υπολογιστές — 40

Συμπερασματικές παρατηρήσεις

Οι αρχιτεκτονικές συνόλου εντολών υποστηρίζουν αριθμητική Προσημασμένων και απρόσημων ακεραίων

Προσεγγίσεων κινητής υποδιαστολής για τους πραγματικούς

Πεπερασμένο εύρος και ακρίβεια Οι λειτουργίες μπορεί να οδηγήσουν σε υπερχείλιση

(overflow) και ανεπάρκεια (underflow)

Αρχιτεκτονική συνόλου εντολών MIPS Εντολές πυρήνα: οι 54 πιο συχνά χρησιμοποιούμενες

100% του SPECINT, 97% του SPECFP

Άλλες εντολές: λιγότερο συχνές

§3.9

Συμ

περ

ασ

μα

τικές

πα

ρα

τηρ

ήσ

εις