Ενδιάμεση Β205. Κεφ. 1-2, Παράρτημα Α Εργαστήρια Εργασίες Ενδιάμεση του 2014 Όχι διάλεξη την Τρίτη (Προετοιμασία)

Σχετικά έγγραφα
Κεφάλαιο 3. Αριθμητική Υπολογιστών Review. Hardware implementation of simple ALU Multiply/Divide Real Numbers

Πολλαπλασιασμός και Διαίρεση Ακεραίων

ΑΡΙΘΜΗΤΙΚΗ ΓΙΑ ΥΠΟΛΟΓΙΣΤΕΣ

Αρχιτεκτονική Υπολογιστών. Data. Κείμενο. Βίντεο. Αριθμοί Εικόνες. Ήχοι

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ

Chapter 3. Αριθμητική Υπολογιστών. Έβδομη (7 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 3. Αριθμητική Υπολογιστών. (συνέχεια)

Αριθμητική Υπολογιστών (Κεφάλαιο 3)

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Νεκτάριος Κοζύρης ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ

Chapter 3 Αριθμητική Υπολογιστών

Κεφάλαιο 3 Αριθμητική Υπολογιστών (Arithmetic for Computers)

Πράξεις με δυαδικούς αριθμούς

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

Αριθμητική Κινητής Υποδιαστολής Πρόσθεση Αριθμών Κινητής Υποδιαστολής

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Αρχιτεκτονικές Υπολογιστών

Chapter 3. Αριθμητική Υπολογιστών. Όγδοη (8 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Οργάνωση Υπολογιστών

Ψηφιακά Συστήματα. 1. Συστήματα Αριθμών

Συστήματα αρίθμησης. = α n-1 *b n-1 + a n-2 *b n-2 + +a 1 b 1 + a 0 όπου τα 0 a i b-1

Εισαγωγή στην επιστήμη των υπολογιστών

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 3. Αριθµητική για υπολογιστές

Δυαδικό Σύστημα Αρίθμησης

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

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΚΑΝΕΝΑ ΑΡΙΘΜΗΤΙΚΟ ΣΥΣΤΗΜΑ ΕΝ ΜΠΟΡΕΙ ΝΑ ΑΠΕΙΚΟΝΙΣΕΙ ΟΛΟΥΣ ΤΟΥΣ ΠΡΑΓΜΑΤΙΚΟΥΣ ΑΡΙΘΜΟΥΣ, ΙΟΤΙ ΕΧΟΥΜΕ ΠΕΡΙΟΡΙΣΜΕΝΟ ΕΥΡΟΣ ΑΚΡΙΒΕΙΑΣ.

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

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

1. ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΩΝ. α i. (α i β i ) (1.3) όπου: η= το πλήθος ακεραίων ψηφίων του αριθμού Ν. n-1

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

1. Το σύστημα κινητής υποδιαστολής 2. Αναπαράσταση πραγματικών δυαδικών αριθμών 3. Το πρότυπο 754 της ΙΕΕΕ

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 3

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Περίληψη. ΗΜΥ 210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο υαδική Αφαίρεση. υαδική Αφαίρεση (συν.) Ακόµη ένα παράδειγµα Αφαίρεσης.

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή

Σύστημα Πλεονάσματος. Αναπαράσταση Πραγματικών Αριθμών. Αριθμητικές Πράξεις σε Αριθμούς Κινητής Υποδιαστολής

ΠΛΗΡΟΦΟΡΙΚΗ I. 4 η ΔΙΑΛΕΞΗ Αριθμητικά Συστήματα

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων

Πραγµατικοί αριθµοί κινητής υποδιαστολής Floating Point Numbers. Σ. Τσιτµηδέλης ΤΕΙ ΧΑΛΚΙΔΑΣ

Ελίνα Μακρή

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

Συστήματα Αρίθμησης. Συστήματα Αρίθμησης 1. PDF created with FinePrint pdffactory Pro trial version

Αριθμητικά Συστήματα

Προγραμματισμός Ι (ΗΥ120)

Εντολές του MIPS (2)

Πληροφορική. Ενότητα 4 η : Κωδικοποίηση & Παράσταση Δεδομένων. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Αριθμητικά Συστήματα Κώδικες

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-Ι. Ενότητα 1: Εισαγωγή στην Αρχιτεκτονική -Ι

Σύστημα Πλεονάσματος και Αναπαράσταση Αριθμών Κινητής Υποδιαστολής

Αρχιτεκτονική Υπολογιστών

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ : Κ. ΠΕΚΜΕΣΤΖΗ

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Αναπαράσταση Αριθμών

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Άλλες Αριθμητικές Συναρτήσεις/Κυκλώματα

Εισαγωγή στην επιστήμη των υπολογιστών. Πράξεις με μπιτ

Αριθμητικά Συστήματα

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Μάθημα 4 ο Πράξεις με bits. Δρ.

Εισαγωγή στην πληροφορική

Λογική Σχεδίαση Ψηφιακών Συστημάτων

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Αριθμητικά Συστήματα Η ανάγκη του ανθρώπου για μετρήσεις οδήγησε αρχικά στην επινόηση των αριθμών Κατόπιν, στην επινόηση συμβόλων για τη παράσταση

Προγραμματισμός Ι (ΗΥ120)

ΗΥ 134. Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 1. Εισαγωγή. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

ΗΥ 232. Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 1. Εισαγωγή στο μάθημα. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Δυαδικη παρασταση αριθμων και συμβολων

Εισαγωγή στην Επιστήμη των Υπολογιστών

11. Ποιες είναι οι άμεσες συνέπειες της διαίρεσης;

Εισαγωγή στην Επιστήμη των Υπολογιστών

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός Ι (HY120)

Εισαγωγή στον Προγραμματισμό

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση

Λογική Σχεδίαση Ι - Εξεταστική Φεβρουαρίου 2013 Διάρκεια εξέτασης : 160 Ονοματεπώνυμο : Α. Μ. Έτος σπουδών:

Κ15 Ψηφιακή Λογική Σχεδίαση 2: Δυαδικό Σύστημα / Αναπαραστάσεις

3. Πρόσθεση Πολλαπλασιασμός 4. Πρόσθεση στο πρότυπο ΙΕΕΕ Πολλαπλασιασμός στο πρότυπο ΙΕΕΕ

Ψηφιακά Κυκλώματα Ι. Μάθημα 1: Δυαδικά συστήματα - Κώδικες. Λευτέρης Καπετανάκης

Λογικός Σχεδιασµός και Σχεδιασµός Η/Υ. ΗΜΥ-210: Εαρινό Εξάµηνο Σκοπός του µαθήµατος. Ψηφιακά Συστήµατα. Περίληψη. Εύρος Τάσης (Voltage(

Αριθµητική υπολογιστών

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

4.1 Θεωρητική εισαγωγή

HY430 Εργαστήριο Ψηφιακών Κυκλωμάτων.

ΠΛΗΡΟΦΟΡΙΚΗ I Ενότητα 6

Κεφάλαιο 3 Κεντρική Μονάδα Επεξεργασίας

Υπολογιστές και Πληροφορία 1

Αριθμητικά Συστήματα = 3 x x x x 10 0

Η κανονική μορφή της συνάρτησης που υλοποιείται με τον προηγούμενο πίνακα αληθείας σε μορφή ελαχιστόρων είναι η Q = [A].

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 3 : Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

Ανασκόπηση στα ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Transcript:

Ενδιάμεση 19.10 Β205 Κεφ. 1-2, Παράρτημα Α Εργαστήρια Εργασίες Ενδιάμεση του 2014 Όχι διάλεξη την Τρίτη (Προετοιμασία) 1

Παράρτημα Β και Κεφάλαιο 3 Αριθμητική Υπολογιστών Review signed numbers, 2 s complement, hex/dec/bin, add/subtract, logical Hardware implementation of simple ALU Multiply/Divide Real Numbers 2

Προσημασμένοι και Απρόσημοι Αριθμοί Οι λέξεις στον MIPS είναι μεγέθους 32bits, -2 32 διαφορετικούς 32bits συνδυασμούς, δηλαδή από 0 μέχρι 2 32-1 0000 0000 0000 0000 0000 0000 0000 0000 two = 0 ten 0000 0000 0000 0000 0000 0000 0000 0001 two = 1 ten 0000 0000 0000 0000 0000 0000 0000 0010 two = 2 ten 1111 1111 1111 1111 1111 1111 1111 1101 two = 4,294,967,293 ten 1111 1111 1111 1111 1111 1111 1111 1110 two = 4,294,967,294 ten 1111 1111 1111 1111 1111 1111 1111 1111 two = 4,294,967,295 ten Απρόσημη Αριθμητική Αν έχουμε n bits η περιοχή των αριθμών είναι : 0 έως (2 n -1) πχ Για n=8 0 έως 255 Για n=16 0 έως 65535 Για n=32 0 έως (2 32-1) 3

Προσημασμένη Αριθμητική Συμπλήρωμα ως προς 2:με n bits -2 (n-1) έως 2 (n-1) -1 Για n=8-128 έως +127 Για n=16-32768 έως +32767 Για n=32-2 31 έως +2 31-1 Μετατροπή από δυαδικό σε δεκαδικό Παράδειγμα Ποια η δεκαδική τιμή του πιο κάτω δυαδικού αριθμού: 1111 1111 1111 1111 1111 1111 1111 1100 two Απάντηση (1x 2 31 )+ (1x2 30 )+ (1x2 29 )+ + (1x2 2 )+ (0x2 1 )+ (0x2 0 ) = -2 31 + 2 30 + 2 29 + + 2 2 + 0 + 0 = -2,147,483,648 ten + 2,147,483,644 ten = -4 ten 4

Προσημασμένη εναντίον απρόσημων συγκρίσεων Παράδειγμα Υποθέτουμε ότι ο καταχωρητής $s0 περιέχει τον δυαδικό αριθμό 1111 1111 1111 1111 1111 1111 1111 1111 two και ο καταχωρητής $s1 περιέχει τον αριθμό 0000 0000 0000 0000 0000 0000 0000 0001 two ποιες είναι οι τιμές των καταχωρητών $t0, $t1 μετά από αυτές τις εντολές slt $t0, $s0, $s1 #signed comparison sltu $t1, $s0, $s1 #unsigned comparison 5

Απάντηση Η τιμή του καταχωρητή $s0 αναπαριστά το 1 εάν είναι ακέραιος και το 4,294,967,295 ten εάν είναι απρόσημος ακέραιος. Η τιμή του καταχωρητή $s1 αναπαριστά το 1 σε οποιαδήποτε περίπτωση. Ο καταχωρητής $t0 έχει τη τιμή 1, αφού 1 ten < 1 ten, Oκαταχωρητής $t1 έχει τη τιμή 0, αφού 4,294,967,295ten > 1 ten. 6

Μετατροπή πρόσημου 2 ten = 0000 0000 0000 0000 0000 0000 0000 0010 two βρίσκουμε το συμπλήρωμα της τιμής και προσθέτουμε 1 1111 1111 1111 1111 1111 1111 1111 1101 two + 1 two = 1111 1111 1111 1111 1111 1111 1111 1110 two = -2 ten επαληθεύοντας, 1111 1111 1111 1111 1111 1111 1111 1110 two 0000 0000 0000 0000 0000 0000 0000 0001 two + 1 two = 0000 0000 0000 0000 0000 0000 0000 0010 two = 2 ten 7

Πίνακας μετατροπής δεκαεξαδικού αριθμού σε δυαδικό Hex Bin Hex Bin Hex Bin Ηex Bin 0 hex 0000 two 4 hex 0100 two 8 hex 1000 two C hex 1100 two 1 hex 0001 two 5 hex 0101 two 9 hex 1001 two D hex 1101 two 2 hex 0010 two 6 hex 0110 two A hex 1010 two E hex 1110 two 3 hex 0011 two 7 hex 0111 two B hex 1011 two F hex 1111 two Παράδειγμα Μετάτρεψε τον ακόλουθο δεκαεξαδικό και δυαδικό αριθμό στην αντίστροφη βάση : eca8 6240 hex 0001 0011 0101 0111 1001 1011 1101 1111 two 8

Απάντηση eca8 6240 hex 1110 1100 1010 1000 0110 0010 0100 0000 two 0001 0011 0101 0111 1001 1011 1101 1111 two 1357 9bdf hex 9

Πρόσθεση και Αφαίρεση Τα ψηφία προσθέτονται ανά bit από τα δεξιά προς τα αριστερά. Τα κρατούμενα (carries) μεταφέρονται στο επόμενο ψηφίο στα αριστερά. Παράδειγμα Προσθέστε το 6 ten με το 7 ten και μετά αφαιρέστε το 6 ten από το 7 ten. Απάντηση 0000 0000 0000 0000 0000 0000 0000 0111 two = 7 ten + 0000 0000 0000 0000 0000 0000 0000 0110 two = 6 ten ------------------------------------------------------------------- 0000 0000 0000 0000 0000 0000 0000 1101 two = 13 ten 10

Η αφαίρεση του 6 ten απο το 7 ten μπορεί να γίνει απευθείας: 0000 0000 0000 0000 0000 0000 0000 0111 two = 7 ten - 0000 0000 0000 0000 0000 0000 0000 0110 two = 6 ten ------------------------------------------------------------------- 0000 0000 0000 0000 0000 0000 0000 0001 two = 1 ten ή μπορεί να γίνει μέσω της πρόσθεσης χρησιμοποιώντας το συμπλήρωμα ως προς 2 (two s complement) του -6, 0000 0000 0000 0000 0000 0000 0000 0111 two = 7 ten + 1111 1111 1111 1111 1111 1111 1111 1010 two = -6 ten ------------------------------------------------------------------ 0000 0000 0000 0000 0000 0000 0000 0001 two = 1 ten 11

Υπάρχει ο κίνδυνος το άθροισμα των δύο 32 - bit αριθμών να είναι πολύ μεγάλο και να μην μπορεί να αναπαρασταθεί κανονικά από τα 32 bit. Το φαινόμενο αυτό ονομάζεται υπερχείλιση (overflow). H υπερχείλιση μπορεί επίσης να συμβεί και στην αφαίρεση. Για παράδειγμα, για να αφαιρέσουμε 2 από το -2,147,483,647 ten μετατρέπουμε το 2 σε -2 και το προσθέτουμε στο -2,147,483,647 ten. Κανονικά το αποτέλεσμα θα έπρεπε να ήταν -2,147,483,649 ten αλλά δεν μπορούμε να αναπαραστήσουμε αυτό το αποτέλεσμα σε 32 bits, έτσι παίρνουμε την λανθασμένη θετική τιμή του 2,147,483,645 ten. Η υπερχείλιση δεν μπορεί να συμβεί στη πρόσθεση δύο αριθμών με διαφορετικό πρόσημο και κατά συνέπεια δεν μπορεί να συμβεί ούτε στην αφαίρεση δυο αριθμών με το ίδιο πρόσημο. 12

Παράδειγμα Έστω ότι έχουμε μια μηχανή των 4 bits 5 + 5 =? Προσημασμένη αριθμητική -8 μέχρι 7 5 -> 0101 5 -> 0101 + 1010 overflow flag = Cout_msb Cin_msb = 0 1 = 1 Υπερχείλιση carry out msb = 0 carry in msb = 1 13

Στο πίνακα φαίνονται όλοι οι συνδυασμοί των λειτουργιών και των τελεστών που οδηγούν σε υπερχείλιση. Operation Operand A Operand B Result indicating an Overflow A + B >= 0 >= 0 < 0 A + B < 0 < 0 >= 0 A B >=0 < 0 < 0 A B < 0 >= 0 >= 0 Οι σχεδιαστές μηχανών πρέπει να βρουν ένα τρόπο που θα αγνοεί την υπερχείλιση σε κάποιες περιπτώσεις (π.χ. απρόσημους αριθμούς) και σε κάποιες άλλες να την αναγνωρίζει (π.χ. προσημασμένους αριθμούς). Η μηχανή MIPS έχει δύο είδη αριθμητικών εντολών για να αναγνωρίζει τις δύο επιλογές: Η πρόσθεση (add), η add immediate (addi) και η αφαίρεση (sub) προκαλούν exceptions στην υπερχείλιση, δηλαδή αναγνωρίζεται. Η απρόσημη πρόσθεση (addu), η άμεση απρόσημη πρόσθεση (addiu) και η απρόσημη αφαίρεση (subu) δεν προκαλούν exceptions στην υπερχείλιση, δηλαδή δεν αναγνωρίζεται. 14

Λογικές Λειτουργίες Η μηχανή MIPS παρέχει εντολές για επεξεργασία χαρακτήρων μέσα σε μια λέξη (32 bits). Μια ομάδα από τέτοιου είδους εντολές ονομάζονται μετακινήσεις (shifts). Αυτές οι εντολές μεταφέρουν όλα τα bits μιας λέξης στα αριστερά ή στα δεξιά, γεμίζοντας τα κενά με μηδενικά. Για παράδειγμα, αν ο καταχωρητής $16 περιέχει: 0000 0000 0000 0000 0000 0000 0000 1101 και εκτελέσουμε την εντολή που μεταφέρει 8 bits αριστερά θα πάρουμε: 0000 0000 0000 0000 0000 1101 0000 0000 15

Οι δύο εντολές μετακίνησης στον MIPS ονομάζονται λογική μετακίνηση προς τα αριστερά (shift left logical - sll) και λογική μετακίνηση προς τα δεξιά (shift right logical - srl). Αν θέλαμε να εκτελέσουμε την πιο πάνω λειτουργία, υποθέτοντας ότι το αποτέλεσμα θα αποθηκευτεί στο καταχωρητή $10, θα έχουμε: sll $10, $16, 8 # reg $10 = reg $16 << 8 bits H αναπαράσταση της πιο πάνω εντολής στη γλώσσα μηχανής θα είναι: Op rs Rt Rd Shamt funct 0 0 16 10 8 0 16

Μια άλλη εντολή που είναι χρήσιμη για απομόνωση πεδίων είναι η εντολή AND. H εντολή AND είναι μια bit προς bit λειτουργία που βάζει 1 στο αποτέλεσμα μόνο αν και τα δύο bits των τελεστών είναι 1. Αν για παράδειγμα ο καταχωρητής $9 περιέχει: 0000 0000 0000 0000 0011 1100 0000 0000 και ο καταχωρητής $10 περιέχει: 0000 0000 0000 0000 0000 1111 0000 0000 Μετά την εκτέλεση της εντολής, and $8, $9, $10 # reg $8 = reg $9 & reg $10 Η τιμή στο καταχωρητή $8 θα είναι: 0000 0000 0000 0000 0000 1100 0000 0000 17

Η εντολή OR είναι μια bit προς bit λειτουργία η οποία βάζει 1 στο αποτέλεσμα αν το bit οποιουδήποτε από τους τελεσταίους είναι 1. Αν για παράδειγμα έχουμε τους καταχωρητές $9 και $10 με τα ίδια περιεχόμενα όπως στο πιο πάνω παράδειγμα, το αποτέλεσμα της εντολής MIPS: or $8, $9, $10 # reg $8 = reg $9 reg $10 0000 0000 0000 0000 0011 1100 0000 0000 0000 0000 0000 0000 0000 1111 0000 0000 είναι το αποτέλεσμα στο καταχωρητή $8: 0000 0000 0000 0000 0011 1111 0000 0000 18

Οι λογικές εντολές στη γλώσσα C και MIPS. Logical Operations C Operators MIPS Instructions Shift Left << sll Shift Right >> srl AND & and, andi OR or, ori 19

Κατασκευή της αριθμητικής και λογικής μονάδας Η αριθμητική και λογική μονάδα είναι μια συσκευή που εκτελεί τις αριθμητικές λειτουργίες όπως πρόσθεση και αφαίρεση και τις λογικές εντολές όπως and και or στον υπολογιστή. Θα κατασκευάσουμε την ALU από τα τέσσερα κομμάτια υλικού που φαίνονται στο σχήμα 20

Επειδή οι λέξεις στον MIPS έχουν μέγεθος 32 bit, πρέπει και η ALU να έχει μέγεθος 32 bit. Ας υποθέσουμε ότι θα συνδέσουμε 32 ALU μεγέθους 1 bit η κάθε μια. ALU του 1 bit Η ALU ενός bit λογική μονάδα για τις λειτουργίες AND και OR, απεικονίζεται πιο κάτω: Ο πολυπλέκτης στα δεξιά διαλέγει την λειτουργία a AND b ή a OR b, ανάλογα με την τιμή της Operation, αν είναι 1 ή 0. 21

Το επόμενο βήμα είναι να συμπεριλάβουμε και την λειτουργία της πρόσθεσης στο υλικό που κατασκευάζουμε. Ένας αθροιστής (adder) πρέπει να έχει δύο εισόδους για τους τελεσταίους και μια έξοδο 1 bit για το αποτέλεσμα (Sum). Μια δεύτερη έξοδος, CarryOut, μεταφέρει το κρατούμενο της πρόσθεσης αν υπάρχει. Αφού το CarryOut του γειτονικού αθροιστή πρέπει να συμπεριληφθεί ως είσοδος θα χρειαστούμε μια τρίτη είσοδο που θα ονομάσουμε CarryIn. Μπορούμε να εκφράσουμε τις συναρτήσεις εξόδου CarryOut και Sum ως λογικές εξισώσεις. 22

Ο πιο κάτω πίνακας δείχνει τις τιμές των εισόδων όταν το CarryOut είναι 1: 23

24

1-bit ALU η οποία εκτελεί τις λειτουργίες AND, OR, και πρόσθεσης 25

32-bit ALU φτιαγμένη από 32 1-bit ALU 26

Η 1-bit ALU η οποία εκτελεί τις λειτουργίες: AND, OR, και πρόσθεσης a+ b και a + NOT (b). Αφαίρεση μπορεί να γίνει με το να προσθέσουμε το Συμπλήρωμα του 2: Επιλέγουμε το Binvert και προσθέτουμε 1 (carryin=0 για το LSB) 27

Μετατροπή της 32-bit ALU για τον MIPS Το σύνολο εντολών add, subtract, AND, OR βρίσκεται στην ALU σε όλους σχεδόν τους υπολογιστές. Όλες σχεδόν οι εντολές του MIPS μπορούν να εκτελεστούν από την πιο πάνω ALU. Η εντολή set-on- less-than επιστρέφει 1 αν Rs < Rt, διαφορετικά επιστρέφει 0. Άρα η εντολή set on less than θα δώσει τιμή 0 σε όλα τα bits, εκτός από το least significant bit το οποίο θα πάρει τιμή ανάλογα με το αποτέλεσμα της σύγκρισης. Πρέπει να επεκτείνουμε τον πολυπλέκτη, για να δίνει μια τιμή για την σύγκριση less than, για κάθε bit στην ALU. 28

Η καινούρια 1-bit ALU με τον επεκταμένο πολυπλέκτη. 29

Χρειαζόμαστε μια νέα ALU για το most significant bit που κάνει την έξοδο του αθροιστή διαθέσιμη για την πρόσθεση με το καθορισμένο αποτέλεσμα εξόδου (standard result output). Στο Σχήμα φαίνεται ο σχεδιασμός με αυτή την καινούρια έξοδο στον αθροιστή. Αφού χρειαζόμαστε μια καινούργια ALU για το most significant bit πρέπει να προσθέσουμε την τεχνική για ανίχνευση της υπερχείλισης (overflow), αφού σχετίζεται με αυτό το bit. Μια 1-bit ALU για το most significant bit. 30

Το Σχήμα δείχνει την τελική μορφή της 32 bit ALU. Προσέξτε ότι κάθε φορά που θέλουμε η ALU να εκτελέσει την λειτουργία της αφαίρεσης, το CarryIn και το Binvert παίρνουν τιμή 1. Για την πρόσθεση ή τις λογικές λειτουργίες θέλουμε και οι δύο γραμμές ελέγχου να έχουν τιμή 0. Άρα μπορούμε να απλοποιήσουμε την σχεδίαση της ALU, ενώνοντας την CarryIn και Binvert σε μια γραμμή που θα ονομάζεται Bnegate. 31

ALUγια την μηχανή MIPS πρέπει επίσης να υποστηρίζει τις εντολές διακλάδωσης υπό συνθήκη (conditional branch). Αυτές οι εντολές διακλαδώνονται αν τα περιεχόμενα των δύο καταχωρητών είναι ίσα ή αν δεν είναι ίσα. Ο πιο εύκολος τρόπος για έλεγχο της ισότητας με την ALU είναι να αφαιρέσεις τα περιεχόμενα του ενός καταχωρητή από τον άλλο και μετά να ελέγξεις αν το αποτέλεσμα είναι ίσο με μηδέν. Πρέπει να προσθέσουμε υλικό που θα ελέγχει αν η έξοδος είναι ίση με μηδέν. Αυτό μπορεί να γίνει με μια OR πύλη η οποία θα μαζεύει όλες τις εξόδους. 32

Η τελική 32 bit ALU 33

ALU Control Function lines 000 And 001 Or 010 Add 110 Subtract 111 Set-on-lessthan Οι τιμές των τριών γραμμών ελέγχου της ALU, Bnegate και Operation και η αντίστοιχη ALU λειτουργία. 34

Στο σχήμα φαίνεται ο παγκόσμιος συμβολισμός για την ολοκληρωμένη ALU. Οι τρεις γραμμές λειτουργίας της ALU που αποτελούνται από τους συνδυασμούς της 1-bit Bnegate γραμμής και της 2-bit γραμμής λειτουργίας (operation line), κάνουν την ALU να παράγει τις επιθυμητές πράξεις: πρόσθεση, αφαίρεση, AND, OR, set on less than. 35

Πολλαπλασιασμός a b a x b c Χρήσιμη μονάδα για υπολογισμό γινομένων Πώς να την υλοποιήσουμε για n bit αριθμούς; 1. Συνδυαστικό και Ακολουθιακό 2. Συνδυαστικό κύκλωμα Συνδιαλλαγή κόστους και ταχύτητας 36

Πολλαπλασιασμός 123 x 2137 861 369 123 246 + 262851 37

Πολλαπλασιασμός (πιθανή υλοποίηση 1) 7 πράξεις σειριακά 123 x 2137 7 x 123 = 861 1. 30 x 123 = 3690 2. 861+3690= 4551 3. 100 x 123 = 12300 4. 4551+12300= 16851 5. 2000x 123= 246000 6. 16851 + 246000= 262851 7. 38

Πολλαπλασιασμός (πιθανή υλοποίηση 1) x + 123 x 2137 7 x 123 = 861 1. 30 x 123 = 3690 2. 861+3690= 4551 3. 100 x 123 = 12300 4. 4551+12300= 16851 5. 2000x 123= 246000 6. 16851 + 246000= 262851 7. 7 πράξεις σειριακά με 2 μονάδες και καταχωρήτη σε 4 κύκλους 39

Πολλαπλασιασμός (πιθανή υλοποίηση 2) 123 x 2137 7 x 123 = 861 1. 30 x 123 = 3690 2. 861+3690= 4551 3. 100 x 123 = 12300 4. 4551+12300= 16851 5. 2000x 123= 246000 6. 16851 + 246000= 262851 7. 40

Πολλαπλασιασμός (πιθανή υλοποίηση 2) 123 7 123 30 123 100 123 2000 x + + + x x 123 x 2137 7 x 123 = 861 1. 1 2 4 6 30 x 123 = 3690 2. 3 861+3690= 4551 3. 5 100 x 123 = 12300 4. 7 4551+12300= 16851 5. 2000x 123= 246000 6. 16851 + 246000= 262851 7. x 7 πράξεις με παραλληλισμό (με 7 μονάδες) σε 1 κύκλο μεγάλο 41

Πολλαπλασιασμός (πιθανή υλοποίηση 3) 123 7 123 30 123 100 123 2000 x Ενδιάμεσος Καταχώρητης + + + x x 123 x 2137 7 x 123 = 861 1. 1 2 4 6 30 x 123 = 3690 2. 3 861+3690= 4551 3. 5 100 x 123 = 12300 4. 7 4551+12300= 16851 5. 2000x 123= 246000 6. 16851 + 246000= 262851 7. x 7 πράξεις με παραλληλισμό (με 7 μονάδες) σε 2 κύκλους (πιο μικρούς) 42

Πολλαπλασιασμός (πιθανή υλοποίηση 4) 123 7 123 30 123 100 123 2000 + + + x x x x Ενδιάμεσος Καταχώρητης Pipelining: να ξεκινά 2 η πράξη πριν τελειώσει η πρώτη 43

Κύκλος 1 123 x 2137 και 96 x 1101 123 7 123 30 123 100 123 2000 + + + x x x x Pipelining: να ξεκινά 2 η πράξη πριν τελειώσει η πρώτη 44

Κύκλος 2 123 x 2137 και 96 x 1101 96 1 96 0 96 100 96 1000 + x + + x x x 4551 12300 246000 Pipelining: να ξεκινά 2 η πράξη πριν τελειώσει η πρώτη 45

Κύκλος 3 123 x 2137 και 96 x 1101.. + x + + x x x 96 9600 96000 262851 Pipelining: να ξεκινά 2 η πράξη πριν τελειώσει η πρώτη 46

Κύκλος 4 123 x 2137 και 96 x 1101.. + x + + x x x 105696 Pipelining: να ξεκινά 2 η πράξη πριν τελειώσει η πρώτη 47

Πολλαπλασιασμός (πιθανή υλοποίηση 5) 123 7 123 30 123 100 123 2000 x + + + x x 123 x 2137 7 x 123 = 861 1. 1 2 4 6 30 x 123 = 3690 2. 3 861+3690= 4551 3. 5 100 x 123 = 12300 4. 7 4551+12300= 16851 5. 2000x 123= 246000 6. 16851 + 246000= 262851 7. x 7 πράξεις με παραλληλισμό (με 7 μονάδες) σε 4 κύκλους μικρούς με pipelining 48

Πολλαπλασιασμός (πιθανή υλοποίηση 6) 123 1.a 1.b 1.c 1.d x 2137 2.a 2.b 861 1.a 123 7 123 30 123 100 123 2000 + + + x x x x 3. 3690 1.b 12300 1.c 246000 1.d 861+3690= 4551 2.a 12300+ 246000= 258300 2.b 4551 + 258300= 262851 3. 7 πράξεις με πιο πολύ παραλληλισμό 49

Πολλές πιθανές υλοποιήσεις 50

Πολλαπλασιασμός στο δυαδικό 8 x 9 = 1000 x 1001 1000 1001 ----------------------------------- 1000 0000 0000 1000 ---------------------- 1001000 Πολλαπλασιαστέος (multiplicand) Πολλαπλασιαστής (multiplier) Γινόμενο (product) Εάν a x b = c και το a και το b είναι n-bit ακέραιοι τότε η μέγιστη του γινομένου c χρειάζεται 2n bits να αναπαρασταθεί 51

Πολλαπλασιασμός για 32 bit αριθμούς (ακολουθιακό+συνδυαστικό) Ο multiplier (Πολλαπλασιαστής) βρίσκεται σε ένα 32-bit Multiplier καταχωρητή ενώ ο multiplicand (Πολλαπλασιαστέος) βρίσκεται στο Multiplicand καταχωρητή που είναι 64-bit και το γινόμενο τοποθετείται στο καταχωρητή Product, είναι 64-bit και αρχικά έχει τιμή 0. Πολλαπλασιαστέος Πολλαπλασιαστής Η πρώτη έκδοση του υλικού του πολλαπλασιασμού 52

Ο πρώτος αλγόριθμος πολλαπλασιασμού Least Significant Bit ----------------------------------- 1000 0000 0000 1000 ---------------------- 1001000 1000 Πολλαπλασιαστέος 1001 Πολλαπλασιαστής 53

Παράδειγμα Χρησιμοποιώντας 4-bit αριθμούς πολλαπλασιάστε το 2 * 3 (0010 * 0011) Iteration Step Multiplier Multiplicand Product 0 Initial values 0011 0000 0010 0000 0000 1a: 1=>Prod=Prod+Mcand 0011 0000 0010 0000 0010 1 2: Shift left Multiplicand 0011 0000 0100 0000 0010 3: Shift right Multiplier 0001 0000 0100 0000 0010 1a: 1=>Prod=Prod+Mcand 0001 0000 0100 0000 0110 2 2: Shift left Multiplicand 0001 0000 1000 0000 0110 3: Shift right Multiplier 0000 0000 1000 0000 0110 1: 0=>no operation 0000 0000 1000 0000 0110 3 2: Shift left Multiplicand 0000 0001 0000 0000 0110 3: Shift right Multiplier 0000 0001 0000 0000 0110 1: 0=>no operation 0000 0001 0000 0000 0110 4 2: Shift left Multiplicand 0000 0010 0000 0000 0110 3: Shift right Multiplier 0000 0010 0000 0000 0110 54

Πιο γρήγορος Πολλαπλασιασμός Ο Νόμος του Moore δίνει την δυνατότητα στους σχεδιαστές να δημιουργούν πιο γρήγορο MULT με την χρήση πιο πολλών κυκλωμάτων Στον σειριακό MULT έχουμε το κόστος του κύκλου για κάθε add. Η χρήση μεγάλου αριθμού ADDers μας δίνει την δυνατότητα να εφαρμόσουμε πολλές βελτιστοποίησης Carry Bit + 31 Bits LSB 55

0010 * 0011 = 00110 Mplier1 Mcand 1 0011 Πολλαπλασιαστής Mplier0 Mcand 0 0000 0 Πολλαπλασιαστέος 001 1 Mplier2 Mcand 0 0000 1 0001 Mplier2 Mcand 000 1 Carry Bit + 31 Bits 0 0000 1 0000 LSB 0000 000110 3 2 1 0 56

0 3 0 2 1 1 1 0 00011 * = 01001 Mplier1 Mcand 1 1 0011 Πολλαπλασιαστέος Mplier0 Mcand 1 0 0001 1 Πολλαπλασιαστής 010 0 0 2 Mplier2 Mcand 0011 0000 0010 001 0 Carry Bit + 31 Bits Mplier2 Mcand 0 3 0011 0000 0001 LSB 0001 0000 1 00001001 3 2 1 0 57

Πρώτη επανάληψη αλγόριθμου διαίρεσης Ο καταχωρητής Divisor (Διαιρέτης), η ALU και ο καταχωρητής Remainder (υπόλοιπο) είναι 64-bits, ενώ ο καταχωρητής Quotient (Πηλίκο) είναι 32-bits. Ο 32-bits divisor ξεκινά από το αριστερό μισό του καταχωρητή Divisor και μετακινείται δεξιά 1bitκάθε φορά. O Remainder παίρνει αρχική τιμή με τον dividend (Διαιρετέος). Η μονάδα ελέγχου αποφασίζει πότε θα μετακινήσει τους καταχωρητές Divisor και Quotient και πότε θα γράψει την νέα τιμή στο καταχωρητή Remainder. dividend Η πρώτη έκδοση υλικού της διαίρεσης 58

ιαιρέτης Initial value = Divisor + 32 zeros Initial value = 0 Πηλίκο Υπόλοιπο Initial value = dividend ιαιρετέος Ο πρώτος αλγόριθμος διαίρεσης ιαιρέτης Πηλίκο ιαιρετέος Υπόλοιπο 59

ιαιρετέος/ Πηλίκο ιαιρέτης Υπόλοιπο Iteration Step Quotient Divisor Remainder Παράδειγμα Διαιρέστε το 7 / 2 (0000 0111 / 0010) 0 Initial values 0000 0010 0000 0000 0111 1: Rem=Rem-Div 0000 0010 0000 1110 0111 1 2b: Rem < 0 => +Div,sll Q,Q0 = 0 0000 0010 0000 0000 0111 3: Shift Div right 0000 0001 0000 0000 0111 1: Rem=Rem-Div 0000 0001 0000 1111 0111 2 2b: Rem < 0 => +Div,sll Q,Q0 = 0 0000 0001 0000 0000 0111 3: Shift Div right 0000 0000 1000 0000 0111 1: Rem=Rem-Div 0000 0000 1000 1111 1111 3 2b: Rem < 0 => +Div,sll Q,Q0 = 0 0000 0000 1000 0000 0111 3: Shift Div right 0000 0000 0100 0000 0111 1: Rem=Rem-Div 0000 0000 0100 0000 0011 4 2a: Rem 0 => sll Q,Q0 = 1 0001 0000 0100 0000 0011 3: Shift Div right 0001 0000 0010 0000 0011 1: Rem=Rem-Div 0001 0000 0010 0000 0001 5 2a: Rem 0 => sll Q,Q0 = 1 0011 0000 0010 0000 0001 3: Shift Div right 0011 0000 0001 0000 0001 60

Πράξεις κινητής υποδιαστολής - IEEE 754 IEEE 754-1985 είναι ένα βιομηχανικό πρότυπο για την αναπαράσταση αριθμών κινητής υποδιαστολής σε υπολογιστές, που υιοθετήθηκε επίσημα το 1985 και αντικαταστάθηκε το 2008 από την τρέχουσα αναθεώρηση. Κατά τη διάρκεια 23 χρόνια του, ήταν η πιο διαδεδομένη μορφή για floating-point υπολογισμούς. Εφαρμόστηκε σε λογισμικό, με τη μορφή κινητής υποδιαστολής βιβλιοθήκες και στο υλικό, στις οδηγίες πολλών CPUs και FPUs. Το πρώτο ολοκληρωμένο κύκλωμα που να υλοποιεί το σχέδιο για το τι επρόκειτο να γίνει IEEE 754-1985 ήταν η Intel 8087 61

Πράξεις κινητής υποδιαστολής - IEEE 754 Για πρακτικούς λόγους είναι καλύτερα οι αριθμοί κινητής υποδιαστολής (floating point numbers) να έχουν μέγεθος μια λέξη. Πιο κάτω φαίνεται η αναπαράσταση ενός αριθμού κινητής υποδιαστολής στον MIPS, s: πρόσημο του συγκεκριμένου αριθμού (1 για αρνητικό), exponent: τιμή του 8-bit exponent πεδίου (συμπεριλαμβανομένου του πρόσημου του exponent) significant είναι ο 23-bit αριθμός μέσα στο fraction. Αυτή η αναπαράσταση ονομάζεται sign and magnitude representation. 31 30 29 28 27 26 25 24 23 s exponent 1 bit 8 bits 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Significant 23 bits 62 Try: http://www.h-schmidt.net/floatconverter/ieee754.html

Γενικά οι αριθμοί υποδιαστολής είναι της μορφής (-1) s x F x 2 E F είναι η τιμή του significant πεδίου Ε είναι η τιμή του exponent πεδίου. Τα μικρότερα κλάσματα (fractions) που μπορούν να αναπαρασταθούν από τον υπολογιστή είναι μεγέθους 2.0 x 10-38 Οι Μεγαλύτεροι αριθμοί που μπορούν να αναπαρασταθούν είναι μεγέθους 2.0 x 10 38. Η υπερχείλιση εδώ σημαίνει ότι ο exponent είναι πολύ μεγάλος για να μπορέσει να αναπαρασταθεί από το πεδίο exponent. Αν ο αρνητικός exponent είναι πολύ μεγάλος για να αναπαρασταθεί από το exponent πεδίο, έχουμε το φαινόμενο underflow. Το fraction που πρέπει να υπολογιστεί είναι τόσο μικρό που δεν μπορεί να αναπαρασταθεί. Για να ελαττωθούν οι περιπτώσεις υπερχείλισης ή underflow, πολλές γλώσσες προγραμματισμού παρέχουν μια γραφή (notation) με μεγάλο exponent. Στην C ονομάζεται double και οι λειτουργίες με doubles ονομάζονται double precision floating-point arithmetic. 63

Στον MIPS οι double precision λειτουργίες επιτρέπουν την αναπαράσταση αριθμών 2.0 x 10 308 μέχρι 2.0 x 10-308. Η αναπαράσταση ενός double precision αριθμού κινητής υποδιαστολής έχει μέγεθος δύο λέξεις στη μηχανή MIPS, όπως φαίνεται πιο κάτω, όπου s είναι το πρόσημο του αριθμού, exponent είναι η τιμή του 11-bit πεδίου exponent και significant είναι ο 52-bit αριθμός μέσα στο fraction. 63 62 61 60 59 58 57 56 55 54 53 52 s exponent 1 bit 11 bits 51 50 49 3 2 1 0 significant 52 bits Η γενική αναπαράσταση για τους floating point αριθμούς είναι: (-1) s x (1 + significant) x 2 (exponent bias) O exponent bias για single precision αριθμούς είναι 127 και για double precision αριθμούς είναι 1023. (-127 0 127) 64

32bit I EEE 754-1985 floating-point number and 64bit IEEE 754 float 65

Παράδειγμα Δείξτε την δυαδική αναπαράσταση της IEEE 754 για τον αριθμό -0,75 σε single και double precision. Απάντηση Ο αριθμός -0,75 γράφεται επίσης ως -3/4 ή -3/2 2. Μπορεί επίσης να αναπαρασταθεί από το fraction -1.5/2 =-1,1 2 x 2-1. H γενική αναπαράσταση ενός single precision αριθμού είναι: (-1) s x (1 +.1000 0000 0000 0000 0000 000 two )x2 (126-127) H single precision δυαδική αναπαράσταση του -0,75 είναι: 31 30 29 28 27 26 25 24 23 1 0 1 1 1 1 1 1 0 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66

Η double precision αναπαράσταση είναι: (-1) 1 x (1 +,1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 two ) x 2 (1022-1023) 63 62 61 60 59 58 57 56 55 54 53 52 1 0 1 1 1 1 1 1 1 1 1 0 51 50 49 3 2 1 0 1 0 0 0 0 0 0 - Παράδειγμα: Ποιόν δεκαδικό αριθμό αναπαριστά η πιο κάτω λέξη; 31 30 29 28 27 26 25 24 23 1 1 0 0 0 0 0 0 1 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67

Απάντηση Το bit πρόσημου (sign bit) είναι 1, το πεδίο exponent περιέχει το 129 και το significant πεδίο περιέχει το 1 x 2-2 = ¼ h 0,25. Χρησιμοποιώντας την βασική εξίσωση: (-1) s x (1 + significant) x 2 (exponent bias) = (-1) 1 x (1 + 0,25) x 2 (129-127) = -1 x 1,25 x 2 2 = -1,25 x 4 = -5 68

Πρόσθεση κινητής υποδιαστολής Ας προσπαθήσουμε να προσθέσουμε τους αριθμούς 9,999 x 10 1 + 1,610 x 10-1. Υποθέστε ότι μόνο τέσσερα ψηφία του significant μπορούν να αποθηκευτούν και μόνο δύο δεκαδικά ψηφία από τον exponent. Δίνεται ο πιο κάτω αλγόριθμος. Αλγόριθμος Βήμα 1: Ο significant του μικρότερου αριθμού πρέπει να μετακινηθεί δεξιά μέχρι ο exponent να ταιριάζει με αυτόν του μεγαλύτερου αριθμού. Δηλαδή, 1,610 x 10-1 = 0,1610 x 10 0 = 0,01610 x 10 1, όμως μόνο τέσσερα δεκαδικά ψηφία μπορούν να αναπαρασταθούν, άρα ο μετακινημένος αριθμός θα είναι: 0,016 x 10 1 69

Βήμα 2: Μετά θα γίνει η πρόσθεση των significant 9,999 + 0,016 10,015 Άρα το άθροισμα είναι 10,015 x 10 1. Βήμα 3: Μετά την πρόσθεση πρέπει να μετακινήσουμε το άθροισμα για να φέρουμε σε κανονική μορφή, κανονικοποιώντας τον exponent. Όταν αυξάνουμε ή μειώνουμε τον exponent πρέπει να ελέγχουμε αν υπάρχει υπερχείλιση ή Underflow. Στο συγκεκριμένο παράδειγμα θα έχουμε: 10,015 x 10 1 = 1,0015 x 10 2. Βήμα 4: Αφού υποθέσουμε ότι ο significant μπορεί να έχει μέγεθος μέχρι 4 ψηφία, τότε πρέπει να στρογγυλοποιήσουμε τον αριθμό. Δηλαδή, το ψηφίο στα δεξιά είναι μεταξύ του 0 και 4 τότε το αγνοούμε, αν είναι μεταξύ του 5 και του 9 τότε προσθέτουμε ένα στο συγκεκριμένο ψηφίο. Ο αριθμός 1,0015 x 10 2, μετατρέπεται στον αριθμό 1,002 x 10 2. 70

Βήμα 1: 1,610 x 10-1 = 0,1610 x 10 0 = 0,01610 x 10 1 Βήμα 2: 9,999 + 0,016 10,015 Βήμα 3: 10,015 x 10 1 = 1,0015 x 10 2. Βήμα 4: 1,002 x 10 2. Αλγόριθμος πρόσθεσης κινητής υποδιαστολής 71

72

Πολλαπλασιασμός κινητής υποδιαστολής Ας προσπαθήσουμε να πολλαπλασιάσουμε τους αριθμούς 1,110 x 10 10 x 9,100 x 10-5. Υποθέστε ότι μόνο τέσσερα ψηφία του significant μπορούν να αποθηκευτούν και μόνο δύο δεκαδικά ψηφία από τον exponent. Αλγόριθμος Βήμα 1: Υπολογίζουμε τον exponent του γινομένου προσθέτοντας απλά exponents των τελεσταίων: Νέος exponent: 10 + (-5) = 5 Ας κάνουμε την ίδια διαδικασία με τα biased exponent για να σιγουρευτούμε ότι θα πάρουμε το ίδιο αποτέλεσμα. 10 + 127 = 137 και -5 + 127 = 122, άρα, τους Νέος exponent: 137 + 122 = 259 Αυτό το αποτέλεσμα όμως είναι πολύ μεγάλο, αυτό είναι το πρόβλημα με την πρόσθεση των biases. Μπορούμε να πάρουμε το σωστό άθροισμα αν αφαιρέσουμε το άθροισμα των biased αριθμών από το άθροισμα: Νέος exponent: 137 + 122 127 = 259 127 = 132 = ( 5+ 127 ). 73

Βήμα 2: Μετά θα γίνει ο πολλαπλασιασμός των significants 1,110 x 9,200 0000 0000 2220 9990. 10212000 Υπάρχουν τρία ψηφία από δεξιά του δεκαδικού για κάθε τελεστή, άρα το δεκαδικό σημείο (τελεία) τοποθετείτε έξι ψηφία από τα δεξιά στον significant του γινομένου: 10,212000 Υποθέτοντας ότι μπορούμε να κρατήσουμε μόνο τρία ψηφία στα δεξιά του δεκαδικού σημείου, το γινόμενο είναι: 10,212 x 10 5. 74

Βήμα 3: Πρέπει να γίνει κανονικοποίηση του γινομένου. Δηλαδή, 10,212 x 10 5 = 1,0212 x 10 6. Άρα μετά τον πολλαπλασιασμό, το γινόμενο πρέπει να μετακινηθεί δεξιά ένα ψηφίο και να προστεθεί ένα στον exponent. Σε αυτό το σημείο μπορούμε να ελέγξουμε για υπερχείλιση ή underflow (υπορροή). Βήμα 4: Αφού υποθέσουμε ότι ο significant μπορεί να έχει μέγεθος μέχρι τέσσερα ψηφία, τότε πρέπει να στρογγυλοποιήσουμε τον αριθμό. Ο αριθμός, 1,0212 x 10 6, μετατρέπεται στον αριθμό, 1,021 x 10 6. Βήμα 5: Το πρόσημο του γινομένου εξαρτάται από τα πρόσημα των αρχικών τελεσταίων. Αν είναι τα ίδια και τα δύο τότε το πρόσημο είναι θετικό, διαφορετικά είναι αρνητικό. Άρα το γινόμενο θα είναι: +1,021 x 10 6. 75

1)137 + 122 127 = 259 127 = 132 = ( 5+ 127 ). 2) 1,110 x 9,200 0000 0000 2220 9990. 10,212000 3) 10,212 x 10 5 = 1,0212 x 10 6. Αλγόριθμος πολλαπλασιασμού κινητής υποδιαστολής 76

Ειδικές Περιπτώσεις στο ΙΕΕ754 0 0-00000000-00000000000000000000000-0 1-00000000-00000000000000000000000 0-11111111-00000000000000000000000-1-11111111-00000000000000000000000 NaN 0-11111111-10000000000000000000000 (fraction = anything except all 0 bits (since all 0 bits represents infinity).) 3.4028235E38 0-11111110-11111111111111111111111

78 Ενότητα 4 - Αριθμητική για υπολογιστές

79

Επιπρόσθετο Υλικό 80

Δεύτερη επανάληψη του αλγόριθμου πολλαπλασιασμού Τα μισά από τα bits του multiplicand στον πρώτο αλγόριθμο είναι πάντα 0, άρα μόνο τα μισά στοιχεία που περιέχει ο multiplicand είναι χρήσιμες πληροφορίες. Η 64-bit ALU είναι αργή και πιο μεγάλη από ότι χρειάζεται αφού τα μισά από τα Bits του adder προσθέτουν 0 στο άθροισμα. Η δεύτερη έκδοση υλικού για το πολλαπλασιασμό 81

Ο δεύτερος αλγόριθμος πολλαπλασιασμού 82

Παράδειγμα: 2 * 3 (0010 * 0011) Iteration Step Multiplier Multiplicand Product 0 Initial values 0011 0010 0000 0000 1a: 1=>Prod=Prod+Mcand 0011 0010 0010 0000 1 2: Shift right Product 0011 0010 0001 0000 3: Shift right Multiplier 0001 0010 0001 0000 1a: 1=>Prod=Prod+Mcand 0001 0010 0011 0000 2 2: Shift right Product 0001 0010 0001 1000 3: Shift right Multiplier 0000 0010 0001 1000 1: 0=>no operation 0000 0010 0001 1000 3 2: Shift right Product 0000 0010 0000 1100 3: Shift right Multiplier 0000 0010 0000 1100 1: 0=>no operation 0000 0010 0000 1100 4 2: Shift right Product 0000 0010 0000 0110 3: Shift right Multiplier 0000 0010 0000 0110 83

Τελική επανάληψη του αλγόριθμου πολλαπλασιασμού Ο καταχωρητής Register αφήνει αχρησιμοποίητο χώρο ακριβώς όσο είναι το μέγεθος του multiplier. Άρα στη τελευταία έκδοση του αλγόριθμου πολλαπλασιασμού το δεξιότερο μισό του γινόμενου ενώνεται με τον multiplier. Η Τρίτη έκδοση του υλικού του πολλαπλασιασμού 84

Ο τρίτος αλγόριθμος πολλαπλασιασμού 85

Παράδειγμα: 2 * 3 (0010 * 0011) Iteration Step Multiplicand Product 0 1 2 3 4 Initial values 0010 0000 0011 1a: 1=>Prod=Prod+Mcand 0010 0010 0011 2: Shift right Product 0010 0001 0001 1a: 1=>Prod=Prod+Mcand 0010 0011 0001 2: Shift right Product 0010 0001 1000 1: 0=>no operation 0010 0001 1000 2: Shift right Product 0010 0000 1100 1: 0=>no operation 0010 0000 1100 2: Shift right Product 0010 0000 0110 86

Δεύτερη επανάληψη αλγόριθμου διαίρεσης Μόνο ο μισός χώρος του Divisor περιέχει χρήσιμες πληροφορίες, έτσι τόσο ο divisor όσο και η ALU μπορούν να χωριστούν στη μέση. Η μετακίνηση του Remainder αριστερά αντί για την μετακίνηση του Divisor στα δεξιά, παράγει την ίδια ευθυγράμμιση, και πετυχαίνει τον σκοπό της απλοποίησης υλικού για την ALU και τον Divisor. Η δεύτερη έκδοση υλικού της διαίρεσης 87

Τελευταία επανάληψη αλγόριθμου διαίρεσης Ο καταχωρητής Quotient μπορεί να αφαιρεθεί αν μετακινήσουμε τα bits του Quotient στον καταχωρητή Remainder. Η τελευταία έκδοση υλικού της διαίρεσης 88

Ο τελικός αλγόριθμος διαίρεσης 89

Παράδειγμα 7 / 2 (0000 0111 / 0010) Iteration Step Divisor Remainder 0 1 2 3 4 Initial values 0010 0000 0111 Shift Rem left 1 0010 0000 1110 2: Rem = Rem Div 0010 1110 1110 3b: Rem < 0 => + Div, sll R, R0 = 0 0010 0001 1100 2: Rem = Rem Div 0010 1111 1100 3b: Rem < 0 => + Div, sll R, R0 = 0 0010 0011 1000 2: Rem = Rem Div 0010 0001 1000 3a: Rem 0 => sll R, R0 = 1 0010 0011 0001 2: Rem = Rem Div 0010 0001 0001 3a: Rem 0 => sll R, R0 = 1 0010 0010 0011 Shift left half of Rem right 1 0010 0001 0011 90