Κεφ. 1-2, Α - UCYchapter3-2016.pdfΕνδιάμεση 19.10 Β205 Κεφ. 1-2, Παράρτημα...
Transcript of Κεφ. 1-2, Α - UCYchapter3-2016.pdfΕνδιάμεση 19.10 Β205 Κεφ. 1-2, Παράρτημα...
Ενδιάμεση 19.10 Β205
Κεφ. 1-2, Παράρτημα ΑΕργαστήριαΕργασίεςΕνδιάμεση του 2014Όχι διάλεξη την Τρίτη (Προετοιμασία)
1Ενότητα 4 - Αριθμητική για υπολογιστές
2Ενότητα 4 - Αριθμητική για υπολογιστές
Παράρτημα Β και Κεφάλαιο 3
Αριθμητική Υπολογιστών• Review
– signed numbers, 2’s complement, hex/dec/bin, add/subtract, logical
• Hardware implementation of simple ALU
• Multiply/Divide• Real Numbers
3Ενότητα 4 - Αριθμητική για υπολογιστές
Προσημασμένοι και Απρόσημοι Αριθμοί• Οι λέξεις στον MIPS είναι μεγέθους 32bits,
- 232 διαφορετικούς 32bits συνδυασμούς, δηλαδή από 0 μέχρι 232 -1
0000 0000 0000 0000 0000 0000 0000 0000two= 0ten0000 0000 0000 0000 0000 0000 0000 0001two= 1ten0000 0000 0000 0000 0000 0000 0000 0010two= 2ten
1111 1111 1111 1111 1111 1111 1111 1101two= 4,294,967,293ten1111 1111 1111 1111 1111 1111 1111 1110two= 4,294,967,294ten1111 1111 1111 1111 1111 1111 1111 1111two= 4,294,967,295ten
• Απρόσημη ΑριθμητικήΑν έχουμε n bits η περιοχή των αριθμών είναι : 0 έως (2n-1) πχ Για n=8 0 έως 255
Για n=16 0 έως 65535Για n=32 0 έως (232-1)
4Ενότητα 4 - Αριθμητική για υπολογιστές
• Προσημασμένη Αριθμητική
•Συμπλήρωμα ως προς 2:με n bits -2(n-1) έως 2(n-1)-1Για n=8 -128 έως +127Για n=16 -32768 έως +32767Για n=32 -231 έως +231 -1
Μετατροπή από δυαδικό σε δεκαδικό
ΠαράδειγμαΠοια η δεκαδική τιμή του πιο κάτω δυαδικού αριθμού:
1111 1111 1111 1111 1111 1111 1111 1100two
Απάντηση(1x –231)+ (1x230)+ (1x229)+…+ (1x22)+ (0x21)+ (0x20)= -231 + 230 + 229 +…+ 22 + 0 + 0= -2,147,483,648ten + 2,147,483,644ten= -4ten
5Ενότητα 4 - Αριθμητική για υπολογιστές
Προσημασμένη εναντίον απρόσημων συγκρίσεων
• ΠαράδειγμαΥποθέτουμε ότι ο καταχωρητής $s0 περιέχει τον δυαδικό αριθμό
1111 1111 1111 1111 1111 1111 1111 1111two
και ο καταχωρητής $s1 περιέχει τον αριθμό
0000 0000 0000 0000 0000 0000 0000 0001two
ποιες είναι οι τιμές των καταχωρητών $t0, $t1 μετά από αυτές τιςεντολές
slt $t0, $s0, $s1 #signed comparisonsltu $t1, $s0, $s1 #unsigned comparison
6Ενότητα 4 - Αριθμητική για υπολογιστές
Απάντηση
• Η τιμή του καταχωρητή $s0 αναπαριστά το –1 εάν είναι ακέραιος και το 4,294,967,295ten εάν είναι
απρόσημος ακέραιος.
• Η τιμή του καταχωρητή $s1 αναπαριστά το 1 σε οποιαδήποτε περίπτωση.
• Ο καταχωρητής $t0 έχει τη τιμή 1, αφού –1ten < 1ten,
• O καταχωρητής $t1 έχει τη τιμή 0, αφού 4,294,967,295ten > 1ten.
7Ενότητα 4 - Αριθμητική για υπολογιστές
Μετατροπή πρόσημου
2ten = 0000 0000 0000 0000 0000 0000 0000 0010two
βρίσκουμε το συμπλήρωμα της τιμής και προσθέτουμε 1
1111 1111 1111 1111 1111 1111 1111 1101two+ 1two
= 1111 1111 1111 1111 1111 1111 1111 1110two= -2ten
επαληθεύοντας,
1111 1111 1111 1111 1111 1111 1111 1110two0000 0000 0000 0000 0000 0000 0000 0001two
+ 1two= 0000 0000 0000 0000 0000 0000 0000 0010two= 2ten
8Ενότητα 4 - Αριθμητική για υπολογιστές
• Πίνακας μετατροπής δεκαεξαδικού αριθμού σε δυαδικό
• Παράδειγμα Μετάτρεψε τον ακόλουθο δεκαεξαδικό και δυαδικό αριθμόστην αντίστροφη βάση :
eca8 6240hex
0001 0011 0101 0111 1001 1011 1101 1111two
Hex Bin H e x B i n Hex Bin Ηex Bin0hex 0000two 4hex 0100two 8hex 1000two Chex 1100two
1hex 0001two 5hex 0101two 9hex 1001two Dhex 1101two
2hex 0010two 6hex 0110two Ahex 1010two Ehex 1110two
3hex 0011two 7hex 0111two Bhex 1011two Fhex 1111two
9Ενότητα 4 - Αριθμητική για υπολογιστές
Απάντησηeca8 6240hex
1110 1100 1010 1000 0110 0010 0100 0000two
0001 0011 0101 0111 1001 1011 1101 1111two
1357 9bdfhex
10Ενότητα 4 - Αριθμητική για υπολογιστές
Πρόσθεση και Αφαίρεση
• Τα ψηφία προσθέτονται ανά bit από τα δεξιά προς τα αριστερά. Τα κρατούμενα (carries) μεταφέρονται στο επόμενο ψηφίο στα αριστερά.
• Παράδειγμα
Προσθέστε το 6ten με το 7ten και μετά αφαιρέστε το 6ten από το 7ten.
Απάντηση0000 0000 0000 0000 0000 0000 0000 0111two = 7ten
+ 0000 0000 0000 0000 0000 0000 0000 0110two = 6ten-------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0000 1101two = 13ten
11Ενότητα 4 - Αριθμητική για υπολογιστές
Η αφαίρεση του 6ten απο το 7ten μπορεί να γίνει απευθείας:
0000 0000 0000 0000 0000 0000 0000 0111two = 7ten- 0000 0000 0000 0000 0000 0000 0000 0110two = 6ten
-------------------------------------------------------------------0000 0000 0000 0000 0000 0000 0000 0001two = 1ten
ή μπορεί να γίνει μέσω της πρόσθεσης χρησιμοποιώντας τοσυμπλήρωμα ως προς 2 (two’s complement) του -6,
0000 0000 0000 0000 0000 0000 0000 0111two = 7ten+ 1111 1111 1111 1111 1111 1111 1111 1010two = -6ten
------------------------------------------------------------------0000 0000 0000 0000 0000 0000 0000 0001two = 1ten
12Ενότητα 4 - Αριθμητική για υπολογιστές
• Υπάρχει ο κίνδυνος το άθροισμα των δύο 32 - bit αριθμών να είναιπολύ μεγάλο και να μην μπορεί να αναπαρασταθεί κανονικά από τα 32bit.
– Το φαινόμενο αυτό ονομάζεται υπερχείλιση (overflow).
H υπερχείλιση μπορεί επίσης να συμβεί και στην αφαίρεση.
•Για παράδειγμα, για να αφαιρέσουμε 2 από το -2,147,483,647tenμετατρέπουμε το 2 σε -2 και το προσθέτουμε στο -2,147,483,647ten.
• Κανονικά το αποτέλεσμα θα έπρεπε να ήταν -2,147,483,649ten αλλάδεν μπορούμε να αναπαραστήσουμε αυτό το αποτέλεσμα σε 32 bits,έτσι παίρνουμε την λανθασμένη θετική τιμή του 2,147,483,645ten.
• Η υπερχείλιση δεν μπορεί να συμβεί στη πρόσθεση δύο αριθμών μεδιαφορετικό πρόσημο και κατά συνέπεια δεν μπορεί να συμβεί ούτεστην αφαίρεση δυο αριθμών με το ίδιο πρόσημο.
13Ενότητα 4 - Αριθμητική για υπολογιστές
• Παράδειγμα
Έστω ότι έχουμε μια μηχανή των 4 bits5 + 5 = ?
Προσημασμένη αριθμητική -8 μέχρι 75 -> 01015 -> 0101 +
1010
overflow flag = Cout_msb Cin_msb = 0 1 = 1 Υπερχείλιση
carry out msb = 0
carry in msb = 1
14Ενότητα 4 - Αριθμητική για υπολογιστές
Στο πίνακα φαίνονται όλοι οι συνδυασμοί των λειτουργιών και των τελεστώνπου οδηγούν σε υπερχείλιση.
• Οι σχεδιαστές μηχανών πρέπει να βρουν ένα τρόπο που θα αγνοεί τηνυπερχείλιση σε κάποιες περιπτώσεις (π.χ. απρόσημους αριθμούς) και σεκάποιες άλλες να την αναγνωρίζει (π.χ. προσημασμένους αριθμούς).
•Η μηχανή MIPS έχει δύο είδη αριθμητικών εντολών για να αναγνωρίζει τις δύο επιλογές:
– Η πρόσθεση (add), η add immediate (addi) και η αφαίρεση (sub) προκαλούν exceptions στην υπερχείλιση, δηλαδή αναγνωρίζεται.
– Η απρόσημη πρόσθεση (addu), η άμεση απρόσημη πρόσθεση (addiu) και η απρόσημη αφαίρεση (subu) δεν προκαλούν exceptions στηνυπερχείλιση, δηλαδή δεν αναγνωρίζεται.
Operation Operand A Operand B Resultindicating an Overflow
A + B >= 0 >= 0 < 0A + B < 0 < 0 >= 0A – B >=0 < 0 < 0A – B < 0 >= 0 >= 0
15Ενότητα 4 - Αριθμητική για υπολογιστές
Λογικές Λειτουργίες
• Η μηχανή MIPS παρέχει εντολές για επεξεργασία χαρακτήρων μέσασε μια λέξη (32 bits).
• Μια ομάδα από τέτοιου είδους εντολές ονομάζονται μετακινήσεις(shifts). Αυτές οι εντολές μεταφέρουν όλα τα bits μιας λέξης στααριστερά ή στα δεξιά, γεμίζοντας τα κενά με μηδενικά. Γιαπαράδειγμα, αν ο καταχωρητής $16 περιέχει:
0000 0000 0000 0000 0000 0000 0000 1101
και εκτελέσουμε την εντολή που μεταφέρει 8 bits αριστερά θαπάρουμε:
0000 0000 0000 0000 0000 1101 0000 0000
16Ενότητα 4 - Αριθμητική για υπολογιστές
• Οι δύο εντολές μετακίνησης στον 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 funct0 0 16 10 8 0
17Ενότητα 4 - Αριθμητική για υπολογιστές
• Μια άλλη εντολή που είναι χρήσιμη για απομόνωση πεδίων είναι ηεντολή 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
18Ενότητα 4 - Αριθμητική για υπολογιστές
• Η εντολή 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 00000000 0000 0000 0000 0000 1111 0000 0000
είναι το αποτέλεσμα στο καταχωρητή $8:
0000 0000 0000 0000 0011 1111 0000 0000
19Ενότητα 4 - Αριθμητική για υπολογιστές
Οι λογικές εντολές στη γλώσσα C και MIPS.
Logical Operations
C Operators MIPS Instructions
Shift Left << sll
Shift Right >> srl
AND & and, andi
OR | or, ori
20Ενότητα 4 - Αριθμητική για υπολογιστές
Κατασκευή της αριθμητικής και λογικής μονάδαςΗ αριθμητική και λογική μονάδα είναι μια συσκευή που εκτελεί τις αριθμητικές λειτουργίες όπως πρόσθεση και αφαίρεση και τις λογικές εντολές όπως and και or στον υπολογιστή.
• Θα κατασκευάσουμε τηνALU από τα τέσσερα κομμάτια υλικού που φαίνονται στο σχήμα
21Ενότητα 4 - Αριθμητική για υπολογιστές
• Επειδή οι λέξεις στον 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.
22Ενότητα 4 - Αριθμητική για υπολογιστές
• Το επόμενο βήμα είναι να συμπεριλάβουμε και την λειτουργία της πρόσθεσης στο υλικό που κατασκευάζουμε.
• Ένας αθροιστής (adder) πρέπει να έχει δύο εισόδους για τους τελεσταίους και μια έξοδο 1 bit για το αποτέλεσμα (Sum).
• Μια δεύτερη έξοδος, CarryOut, μεταφέρει το κρατούμενο της πρόσθεσης αν υπάρχει.
• Αφού το CarryOut του γειτονικού αθροιστή πρέπει να συμπεριληφθεί ως είσοδος θα χρειαστούμε μια τρίτη είσοδο που θα ονομάσουμε CarryIn.
• Μπορούμε να εκφράσουμε τις συναρτήσεις εξόδου CarryOut και Sum ως λογικές εξισώσεις.
23Ενότητα 4 - Αριθμητική για υπολογιστές
Ο πιο κάτω πίνακας δείχνει τις τιμές των εισόδων όταν το CarryOutείναι 1:
25Ενότητα 4 - Αριθμητική για υπολογιστές
1-bit ALU η οποία εκτελεί τις λειτουργίες
– AND, – OR, και – πρόσθεσης
27Ενότητα 4 - Αριθμητική για υπολογιστές
Η 1-bit ALU η οποία εκτελεί τις λειτουργίες: AND, OR, και πρόσθεσης a + b και a + NOT (b).
Αφαίρεση μπορεί να γίνει με το να προσθέσουμε το Συμπλήρωμα του 2:• Επιλέγουμε το Binvert και προσθέτουμε 1 (carryIn=0 για το LSB)
28Ενότητα 4 - Αριθμητική για υπολογιστές
Μετατροπή της 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.
30Ενότητα 4 - Αριθμητική για υπολογιστές
•Χρειαζόμαστε μια νέα ALU για το most significant bit που κάνει την έξοδο του αθροιστή διαθέσιμη για την πρόσθεση με το καθορισμένο αποτέλεσμα εξόδου (standard result output).
•Στο Σχήμα φαίνεται ο σχεδιασμός με αυτή την καινούρια έξοδο στον αθροιστή.
•Αφού χρειαζόμαστε μια καινούργια ALU για το most significant bit πρέπει να προσθέσουμε την τεχνική για ανίχνευση της υπερχείλισης (overflow), αφού σχετίζεται με αυτό το bit.
Μια 1-bit ALU για το most significant bit.
31Ενότητα 4 - Αριθμητική για υπολογιστές
• Το Σχήμα δείχνει την τελική μορφή της 32 bit ALU. •Προσέξτε ότι κάθε φορά που θέλουμε η ALU να εκτελέσει την λειτουργία της αφαίρεσης, το CarryIn και το Binvert παίρνουν τιμή 1. •Για την πρόσθεση ή τις λογικές λειτουργίες θέλουμε και οι δύο γραμμές ελέγχου να έχουν τιμή 0. •Άρα μπορούμε να απλοποιήσουμε την σχεδίαση της ALU, ενώνοντας την CarryIn και Binvert σε μια γραμμή που θα ονομάζεται Bnegate.
32Ενότητα 4 - Αριθμητική για υπολογιστές
• ALU για την μηχανή MIPS πρέπει επίσης να υποστηρίζει τις εντολές διακλάδωσης υπό συνθήκη (conditional branch). •Αυτές οι εντολές διακλαδώνονται αν τα περιεχόμενα των δύο καταχωρητών είναι ίσα ή αν δεν είναι ίσα. •Ο πιο εύκολος τρόπος για έλεγχο της ισότητας με την ALU είναι να αφαιρέσεις τα περιεχόμενα του ενός καταχωρητή από τον άλλο και μετά να ελέγξεις αν το αποτέλεσμα είναι ίσο με μηδέν. •Πρέπει να προσθέσουμε υλικό που θα ελέγχει αν η έξοδος είναι ίση με μηδέν. Αυτό μπορεί να γίνει με μια OR πύλη η οποία θα μαζεύει όλες τις εξόδους.
34Ενότητα 4 - Αριθμητική για υπολογιστές
Οι τιμές των τριών γραμμών ελέγχου της ALU, Bnegate και Operation και η αντίστοιχη ALU λειτουργία.
ALU Control lines
Function
000 And001 Or010 Add110 Subtract111 Set-on-less-
than
35Ενότητα 4 - Αριθμητική για υπολογιστές
•Στο σχήμα φαίνεται ο παγκόσμιος συμβολισμός για την ολοκληρωμένη ALU. •Οι τρεις γραμμές λειτουργίας της ALU που αποτελούνται από τους συνδυασμούς της 1-bit Bnegate γραμμής και της 2-bit γραμμής λειτουργίας (operation line), κάνουν την ALU να παράγει τις επιθυμητές πράξεις: πρόσθεση, αφαίρεση, AND, OR, set on less than.
Πολλαπλασιασμός
Χρήσιμη μονάδα για υπολογισμό γινομένων
Πώς να την υλοποιήσουμε για n–bit αριθμούς;
1. Συνδυαστικό και Ακολουθιακό2. Συνδυαστικό κύκλωμαΣυνδιαλλαγή κόστους και ταχύτητας36Ενότητα 4 - Αριθμητική για υπολογιστές
a x bab
c
Πολλαπλασιασμός (πιθανή υλοποίηση 1)
123x 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 πράξεις σειριακά
38Ενότητα 4 - Αριθμητική για υπολογιστές
Πολλαπλασιασμός (πιθανή υλοποίηση 1)
123x 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Ενότητα 4 - Αριθμητική για υπολογιστές
x
+
Πολλαπλασιασμός (πιθανή υλοποίηση 2)
123x 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Ενότητα 4 - Αριθμητική για υπολογιστές
Πολλαπλασιασμός (πιθανή υλοποίηση 2)
123x 2137
7 x 123 = 861 1. 1 2 4 630 x 123 = 3690 2. 3861+3690= 4551 3. 5100 x 123 = 12300 4. 74551+12300= 16851 5. 2000x 123= 246000 6.
16851 + 246000= 262851 7.
7 πράξεις με παραλληλισμό (με 7 μονάδες) σε 1 κύκλο μεγάλο
41Ενότητα 4 - Αριθμητική για υπολογιστές
x x x x
+
+
+
123 7 123 30 123 100 123 2000
Πολλαπλασιασμός (πιθανή υλοποίηση 3)
123x 2137
7 x 123 = 861 1. 1 2 4 630 x 123 = 3690 2. 3861+3690= 4551 3. 5100 x 123 = 12300 4. 74551+12300= 16851 5. 2000x 123= 246000 6.
16851 + 246000= 262851 7.
7 πράξεις με παραλληλισμό (με 7 μονάδες) σε 2 κύκλους (πιο μικρούς)
42Ενότητα 4 - Αριθμητική για υπολογιστές
x x x x
+
+
+
123 7 123 30 123 100 123 2000
Ενδιάμεσος Καταχώρητης
Πολλαπλασιασμός (πιθανή υλοποίηση 4)
Pipelining: να ξεκινά 2η πράξη πριν τελειώσει η πρώτη
43Ενότητα 4 - Αριθμητική για υπολογιστές
x x x x
+
+
+
123 7 123 30 123 100 123 2000
Ενδιάμεσος Καταχώρητης
Κύκλος 1
Pipelining: να ξεκινά 2η πράξη πριν τελειώσει η πρώτη44Ενότητα 4 - Αριθμητική για υπολογιστές
x x x x
+
+
+
123 7 123 30 123 100 123 2000
123 x 2137 και 96 x 1101
Κύκλος 2
Pipelining: να ξεκινά 2η πράξη πριν τελειώσει η πρώτη
45Ενότητα 4 - Αριθμητική για υπολογιστές
x x x x
+
+
+4551 12300 246000
123 x 2137 και 96 x 1101
96 1 96 0 96 100 96 1000
Κύκλος 3
Pipelining: να ξεκινά 2η πράξη πριν τελειώσει η πρώτη
46Ενότητα 4 - Αριθμητική για υπολογιστές
x x x x
+
+
+96 9600 96000
123 x 2137 και 96 x 1101
………………………………..
262851
Κύκλος 4
Pipelining: να ξεκινά 2η πράξη πριν τελειώσει η πρώτη
47Ενότητα 4 - Αριθμητική για υπολογιστές
x x x x
+
+
+ ………
123 x 2137 και 96 x 1101
………………………………..
105696
Πολλαπλασιασμός (πιθανή υλοποίηση 5)
123x 2137
7 x 123 = 861 1. 1 2 4 630 x 123 = 3690 2. 3861+3690= 4551 3. 5100 x 123 = 12300 4. 74551+12300= 16851 5. 2000x 123= 246000 6.
16851 + 246000= 262851 7.
7 πράξεις με παραλληλισμό (με 7 μονάδες) σε 4 κύκλους μικρούς με pipelining
48Ενότητα 4 - Αριθμητική για υπολογιστές
x x x x
+
+
+
123 7 123 30 123 100 123 2000
Πολλαπλασιασμός (πιθανή υλοποίηση 6)
1231.a 1.b 1.c 1.d x 2137
2.a 2.b 861 1.a3. 3690 1.b
12300 1.c246000 1.d
861+3690= 4551 2.a12300+ 246000= 258300 2.b4551 + 258300= 262851 3.
49Ενότητα 4 - Αριθμητική για υπολογιστές
7 πράξεις με πιο πολύ παραλληλισμό
x x x x
+
+
+123 7 123 30 123 100 123 2000
51Ενότητα 4 - Αριθμητική για υπολογιστές
Πολλαπλασιασμός στο δυαδικό
1000
1001-----------------------------------
1000
0000
0000
1000
----------------------
1001000
Πολλαπλασιαστέος (multiplicand)
Πολλαπλασιαστής (multiplier)
Γινόμενο (product)
8 x 9 = 1000 x 1001
Εάν a x b = c και το a και το b είναι n-bit ακέραιοι τότε η μέγιστη του γινομένου c χρειάζεται 2n bits να αναπαρασταθεί
52Ενότητα 4 - Αριθμητική για υπολογιστές
Πολλαπλασιασμός για 32 bit αριθμούς (ακολουθιακό+συνδυαστικό)Ο multiplier (Πολλαπλασιαστής) βρίσκεται σε ένα 32-bit Multiplier καταχωρητή ενώ ο multiplicand (Πολλαπλασιαστέος) βρίσκεται στο Multiplicand καταχωρητή που είναι 64-bit και το γινόμενο τοποθετείται στο καταχωρητή Product, είναι 64-bitκαι αρχικά έχει τιμή 0.
Η πρώτη έκδοση του υλικού του πολλαπλασιασμού
Πολλαπλασιαστέος
Πολλαπλασιαστής
53Ενότητα 4 - Αριθμητική για υπολογιστές
Ο πρώτος αλγόριθμος πολλαπλασιασμού
1000
1001-----------------------------------
1000
0000
0000
1000
----------------------
1001000
Πολλαπλασιαστέος
Πολλαπλασιαστής
Least Significant Bit
54Ενότητα 4 - Αριθμητική για υπολογιστές
Παράδειγμα Χρησιμοποιώντας 4-bit αριθμούς πολλαπλασιάστε το 2 * 3 (0010 * 0011)Iteration Step Multiplier Multiplicand Product
0 Initial values 0011 0000 0010 0000 0000
1
1a: 1=>Prod=Prod+Mcand 0011 0000 0010 0000 00102: Shift left Multiplicand 0011 0000 0100 0000 00103: Shift right Multiplier 0001 0000 0100 0000 0010
2
1a: 1=>Prod=Prod+Mcand 0001 0000 0100 0000 01102: Shift left Multiplicand 0001 0000 1000 0000 01103: Shift right Multiplier 0000 0000 1000 0000 0110
3
1: 0=>no operation 0000 0000 1000 0000 01102: Shift left Multiplicand 0000 0001 0000 0000 01103: Shift right Multiplier 0000 0001 0000 0000 0110
4
1: 0=>no operation 0000 0001 0000 0000 01102: Shift left Multiplicand 0000 0010 0000 0000 01103: Shift right Multiplier 0000 0010 0000 0000 0110
55Ενότητα 4 - Αριθμητική για υπολογιστές
Πιο γρήγορος Πολλαπλασιασμός
• Ο Νόμος του Moore δίνει την δυνατότητα στους σχεδιαστές να δημιουργούν πιο γρήγορο MULT με την χρήση πιο πολλών κυκλωμάτων
• Στον σειριακό MULT έχουμε το κόστος του κύκλου για κάθε add.
• Η χρήση μεγάλου αριθμού ADDers μας δίνει την δυνατότητα να εφαρμόσουμε πολλές βελτιστοποίησης
LSBCarry Bit + 31 Bits
56Ενότητα 4 - Αριθμητική για υπολογιστές
LSB
Carry Bit + 31 Bits
Mplier1 • Mcand1 0011
Mplier0 • Mcand0 0000 0
001 1
Mplier2 • Mcand
0 0000 1 0001
000 1
Mplier2 • Mcand
0 0000 1 0000
0000
000110
0010 * 0011 = 00110
3 2 1 0
ΠολλαπλασιαστέοςΠολλαπλασιαστής
57Ενότητα 4 - Αριθμητική για υπολογιστές
LSB
Carry Bit + 31 Bits
Mplier1 • Mcand11 0011
Mplier0 • Mcand10 0001 1
010 0
Mplier2 • Mcand
02
001 0
Mplier2 • Mcand
03
0001
00001001
* = 01001
3 2 1 00000 1
03 02 11 10 00011
0000
0011
0000
0011
0010
0001
Πολλαπλασιαστέος Πολλαπλασιαστής
58Ενότητα 4 - Αριθμητική για υπολογιστές
Πρώτη επανάληψη αλγόριθμου διαίρεσης
• Ο καταχωρητής Divisor (Διαιρέτης), η ALU και ο καταχωρητής Remainder (υπόλοιπο) είναι 64-bits, ενώ ο καταχωρητής Quotient (Πηλίκο) είναι 32-bits. • Ο 32-bits divisor ξεκινά από το αριστερό μισό του καταχωρητή Divisor και μετακινείται δεξιά 1 bit κάθε φορά.• O Remainder παίρνει αρχική τιμή με τον dividend (Διαιρετέος). • Η μονάδα ελέγχου αποφασίζει πότε θα μετακινήσει τους καταχωρητές Divisor και Quotient και πότε θα γράψει την νέα τιμή στο καταχωρητή Remainder.
Η πρώτη έκδοση υλικού της διαίρεσης
dividend
59Ενότητα 4 - Αριθμητική για υπολογιστές
Ο πρώτος αλγόριθμος διαίρεσης
Initial value = 0
Initial value = dividend
Initial value = Divisor + 32 zeros
∆ιαιρέτης
∆ιαιρέτης
Πηλίκο
Πηλίκο
Υπόλοιπο
Υπόλοιπο
∆ιαιρετέος
∆ιαιρετέος
60Ενότητα 4 - Αριθμητική για υπολογιστές
• Παράδειγμα Διαιρέστε το 7 / 2 (0000 0111 / 0010)Iteration Step Quotient Divisor Remainder
0 Initial values 0000 0010 0000 0000 0111
11: Rem=Rem-Div 0000 0010 0000 1110 01112b: Rem < 0 => +Div,sll Q,Q0 = 0 0000 0010 0000 0000 01113: Shift Div right 0000 0001 0000 0000 0111
21: Rem=Rem-Div 0000 0001 0000 1111 01112b: Rem < 0 => +Div,sll Q,Q0 = 0 0000 0001 0000 0000 01113: Shift Div right 0000 0000 1000 0000 0111
31: Rem=Rem-Div 0000 0000 1000 1111 11112b: Rem < 0 => +Div,sll Q,Q0 = 0 0000 0000 1000 0000 01113: Shift Div right 0000 0000 0100 0000 0111
41: Rem=Rem-Div 0000 0000 0100 0000 00112a: Rem ≥ 0 => sll Q,Q0 = 1 0001 0000 0100 0000 00113: Shift Div right 0001 0000 0010 0000 0011
51: Rem=Rem-Div 0001 0000 0010 0000 00012a: Rem ≥ 0 => sll Q,Q0 = 1 0011 0000 0010 0000 00013: Shift Div right 0011 0000 0001 0000 0001
∆ιαιρέτηςΠηλίκο Υπόλοιπο∆ιαιρετέος/
Πράξεις κινητής υποδιαστολής - IEEE 754
61Ενότητα 4 - Αριθμητική για υπολογιστές
IEEE 754-1985 είναι ένα βιομηχανικό πρότυπο για την αναπαράσταση αριθμώνκινητής υποδιαστολής σε υπολογιστές, που υιοθετήθηκε επίσημα το 1985 καιαντικαταστάθηκε το 2008 από την τρέχουσα αναθεώρηση.
Κατά τη διάρκεια 23 χρόνια του, ήταν η πιο διαδεδομένη μορφή για floating-pointυπολογισμούς. Εφαρμόστηκε σε λογισμικό, με τη μορφή κινητής υποδιαστολήςβιβλιοθήκες και στο υλικό, στις οδηγίες πολλών CPUs και FPUs.
Το πρώτο ολοκληρωμένο κύκλωμα που να υλοποιεί το σχέδιο για το τι επρόκειτο ναγίνει IEEE 754-1985 ήταν η Intel 8087
62Ενότητα 4 - Αριθμητική για υπολογιστές
Πράξεις κινητής υποδιαστολής - 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 23s exponent
22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0Significant
1 bit 8 bits
23 bits
Try: http://www.h-schmidt.net/FloatConverter/IEEE754.html
63Ενότητα 4 - Αριθμητική για υπολογιστές
• Γενικά οι αριθμοί υποδιαστολής είναι της μορφής (-1)s x F x 2E
– F είναι η τιμή του significant πεδίου – Ε είναι η τιμή του exponent πεδίου.
• Τα μικρότερα κλάσματα (fractions) που μπορούν να αναπαρασταθούν από τον υπολογιστή είναι μεγέθους 2.0 x 10-38
• Οι Μεγαλύτεροι αριθμοί που μπορούν να αναπαρασταθούν είναι μεγέθους 2.0 x 1038.• Η υπερχείλιση εδώ σημαίνει ότι ο exponent είναι πολύ μεγάλος για να μπορέσει να αναπαρασταθεί από το πεδίο exponent.• Αν ο αρνητικός exponent είναι πολύ μεγάλος για να αναπαρασταθεί από το exponent πεδίο, έχουμε το φαινόμενο underflow.
– Το fraction που πρέπει να υπολογιστεί είναι τόσο μικρό που δεν μπορεί να αναπαρασταθεί.
• Για να ελαττωθούν οι περιπτώσεις υπερχείλισης ή underflow, πολλέςγλώσσες προγραμματισμού παρέχουν μια γραφή (notation) με μεγάλοexponent.• Στην C ονομάζεται double και οι λειτουργίες με doubles ονομάζονται double precision floating-point arithmetic.
64Ενότητα 4 - Αριθμητική για υπολογιστές
• Στον MIPS οι double precision λειτουργίες επιτρέπουν την αναπαράσταση αριθμών 2.0 x 10308 μέχρι 2.0 x 10-308.
• Η αναπαράσταση ενός double precision αριθμού κινητής υποδιαστολής έχει μέγεθος δύο λέξεις στη μηχανή MIPS, όπως φαίνεται πιο κάτω, όπου s είναι το πρόσημο του αριθμού, exponent είναι η τιμή του 11-bit πεδίου exponentκαι significant είναι ο 52-bit αριθμός μέσα στο fraction.
1 bit 11 bits
52 bits
• Η γενική αναπαράσταση για τους floating point αριθμούς είναι:(-1)s x (1 + significant) x 2(exponent – bias)
O exponent bias για single precision αριθμούς είναι 127 και για doubleprecision αριθμούς είναι 1023. (-127 – 0 – 127)
63 62 61 60 59 58 57 56 55 54 53 52s exponent
51 50 49 … 3 2 1 0significant
32bit I EEE 754-1985 floating-point number and 64bit IEEE 754 float
65Ενότητα 4 - Αριθμητική για υπολογιστές
66Ενότητα 4 - Αριθμητική για υπολογιστές
• ΠαράδειγμαΔείξτε την δυαδική αναπαράσταση της IEEE 754 για τον αριθμό -0,75 σεsingle και double precision.
Απάντηση
• Ο αριθμός -0,75 γράφεται επίσης ως -3/4 ή -3/22. Μπορεί επίσης νααναπαρασταθεί από το fraction -1.5/2 =-1,12 x 2-1. • H γενική αναπαράσταση ενός single precision αριθμού είναι:
(-1)s x (1 + .1000 0000 0000 0000 0000 000two) x 2(126-127)
H single precision δυαδική αναπαράσταση του -0,75 είναι:
31 30 29 28 27 26 25 24 231 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 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
67Ενότητα 4 - Αριθμητική για υπολογιστές
Η double precision αναπαράσταση είναι:
(-1)1 x (1 + ,1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00000000 0000two) x 2(1022-1023)
- Παράδειγμα: Ποιόν δεκαδικό αριθμό αναπαριστά η πιο κάτω λέξη;
63 62 61 60 59 58 57 56 55 54 53 521 0 1 1 1 1 1 1 1 1 1 0
51 50 49 … 3 2 1 01 0 0 … 0 0 0 0
31 30 29 28 27 26 25 24 231 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 00 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
68Ενότητα 4 - Αριθμητική για υπολογιστές
Απάντηση
Το 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 22
= -1,25 x 4= -5
69Ενότητα 4 - Αριθμητική για υπολογιστές
Πρόσθεση κινητής υποδιαστολής
• Ας προσπαθήσουμε να προσθέσουμε τους αριθμούς 9,999 x 101 +1,610 x 10-1. • Υποθέστε ότι μόνο τέσσερα ψηφία του significant μπορούν να αποθηκευτούν και μόνο δύο δεκαδικά ψηφία από τον exponent. Δίνεται ο πιο κάτω αλγόριθμος.
• Αλγόριθμος
Βήμα 1: Ο significant του μικρότερου αριθμού πρέπει να μετακινηθεί δεξιά μέχρι ο exponent να ταιριάζει με αυτόν του μεγαλύτερου αριθμού. Δηλαδή,
1,610 x 10-1 = 0,1610 x 100 = 0,01610 x 101 ,όμως μόνο τέσσερα δεκαδικά ψηφία μπορούν να αναπαρασταθούν, άρα ο μετακινημένος αριθμός θα είναι:
0,016 x 101
70Ενότητα 4 - Αριθμητική για υπολογιστές
Βήμα 2: Μετά θα γίνει η πρόσθεση των significant9,999
+ 0,01610,015
Άρα το άθροισμα είναι 10,015 x 101.
Βήμα 3: Μετά την πρόσθεση πρέπει να μετακινήσουμε το άθροισμα για να φέρουμε σε κανονική μορφή, κανονικοποιώντας τον exponent.
– Όταν αυξάνουμε ή μειώνουμε τον exponent πρέπει να ελέγχουμε αν υπάρχει υπερχείλιση ή Underflow. Στο συγκεκριμένο παράδειγμα θα έχουμε:
10,015 x 101 = 1,0015 x 102.
Βήμα 4: Αφού υποθέσουμε ότι ο significant μπορεί να έχει μέγεθος μέχρι 4 ψηφία, τότε πρέπει να στρογγυλοποιήσουμε τον αριθμό.
– Δηλαδή, το ψηφίο στα δεξιά είναι μεταξύ του 0 και 4 τότε το αγνοούμε, – αν είναι μεταξύ του 5 και του 9 τότε προσθέτουμε ένα στο συγκεκριμένο
ψηφίο. – Ο αριθμός 1,0015 x 102, μετατρέπεται στον αριθμό 1,002 x 102.
71Ενότητα 4 - Αριθμητική για υπολογιστές
Αλγόριθμος πρόσθεσης κινητής υποδιαστολής
Βήμα 1: 1,610 x 10-1 = 0,1610 x 100 = 0,01610 x 101
Βήμα 2: 9,999+ 0,016
10,015
Βήμα 3: 10,015 x 101 = 1,0015 x 102.
Βήμα 4: 1,002 x 102.
73Ενότητα 4 - Αριθμητική για υπολογιστές
Πολλαπλασιασμός κινητής υποδιαστολής
• Ας προσπαθήσουμε να πολλαπλασιάσουμε τους αριθμούς 1,110 x 1010 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 ).
74Ενότητα 4 - Αριθμητική για υπολογιστές
Βήμα 2: Μετά θα γίνει ο πολλαπλασιασμός των significants1,110
x 9,20000000000
22209990 .
10212000
Υπάρχουν τρία ψηφία από δεξιά του δεκαδικού για κάθε τελεστή, άρα το δεκαδικό σημείο (τελεία) τοποθετείτε έξι ψηφία από τα δεξιά στον significant του γινομένου: 10,212000
Υποθέτοντας ότι μπορούμε να κρατήσουμε μόνο τρία ψηφία στα δεξιά του δεκαδικού σημείου, το γινόμενο είναι: 10,212 x 105.
75Ενότητα 4 - Αριθμητική για υπολογιστές
Βήμα 3: Πρέπει να γίνει κανονικοποίηση του γινομένου. Δηλαδή,
10,212 x 105 = 1,0212 x 106.
Άρα μετά τον πολλαπλασιασμό, το γινόμενο πρέπει να μετακινηθεί δεξιά ένα ψηφίο και να προστεθεί ένα στον exponent. Σε αυτό το σημείο μπορούμε να ελέγξουμε για υπερχείλιση ή underflow (υπορροή).
Βήμα 4: Αφού υποθέσουμε ότι ο significant μπορεί να έχει μέγεθος μέχρι τέσσερα ψηφία, τότε πρέπει να στρογγυλοποιήσουμε τον αριθμό. Ο αριθμός,
1,0212 x 106 , μετατρέπεται στον αριθμό, 1,021 x 106.
Βήμα 5: Το πρόσημο του γινομένου εξαρτάται από τα πρόσημα των αρχικών τελεσταίων. Αν είναι τα ίδια και τα δύο τότε το πρόσημο είναι θετικό, διαφορετικά είναι αρνητικό. Άρα το γινόμενο θα είναι:
+1,021 x 106.
76Ενότητα 4 - Αριθμητική για υπολογιστές
Αλγόριθμος πολλαπλασιασμού κινητής υποδιαστολής
1)137 + 122 – 127 = 259 – 127 = 132 = ( 5+ 127 ).
2) 1,110x 9,200
00000000
22209990 .
10,212000
3) 10,212 x 105 = 1,0212 x 106.
Ειδικές Περιπτώσεις στο ΙΕΕ7540
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
81Ενότητα 4 - Αριθμητική για υπολογιστές
Δεύτερη επανάληψη του αλγόριθμου πολλαπλασιασμού•Τα μισά από τα bits του multiplicand στον πρώτο αλγόριθμο είναι πάντα 0, άρα μόνο τα μισά στοιχεία που περιέχει οmultiplicand είναι χρήσιμες πληροφορίες. •Η 64-bit ALU είναι αργή και πιο μεγάλη από ότι χρειάζεται αφού τα μισά από τα Bits του adder προσθέτουν 0 στο άθροισμα.
Η δεύτερη έκδοση υλικού για το πολλαπλασιασμό
83Ενότητα 4 - Αριθμητική για υπολογιστές
Iteration Step Multiplier Multiplicand Product
0 Initial values 0011 0010 0000 0000
1
1a: 1=>Prod=Prod+Mcand 0011 0010 0010 0000
2: Shift right Product 0011 0010 0001 0000
3: Shift right Multiplier 0001 0010 0001 0000
2
1a: 1=>Prod=Prod+Mcand 0001 0010 0011 0000
2: Shift right Product 0001 0010 0001 1000
3: Shift right Multiplier 0000 0010 0001 1000
3
1: 0=>no operation 0000 0010 0001 1000
2: Shift right Product 0000 0010 0000 1100
3: Shift right Multiplier 0000 0010 0000 1100
4
1: 0=>no operation 0000 0010 0000 1100
2: Shift right Product 0000 0010 0000 0110
3: Shift right Multiplier 0000 0010 0000 0110
Παράδειγμα: 2 * 3 (0010 * 0011)
84Ενότητα 4 - Αριθμητική για υπολογιστές
Τελική επανάληψη του αλγόριθμου πολλαπλασιασμού• Ο καταχωρητής Register αφήνει αχρησιμοποίητο χώρο ακριβώς όσο είναι το μέγεθος του multiplier.•Άρα στη τελευταία έκδοση του αλγόριθμου πολλαπλασιασμού το δεξιότερο μισό του γινόμενου ενώνεται με τον multiplier.
Η Τρίτη έκδοση του υλικού του πολλαπλασιασμού
86Ενότητα 4 - Αριθμητική για υπολογιστές
Iteration Step Multiplicand Product
0 Initial values 0010 0000 0011
11a: 1=>Prod=Prod+Mcand 0010 0010 0011
2: Shift right Product 0010 0001 0001
21a: 1=>Prod=Prod+Mcand 0010 0011 0001
2: Shift right Product 0010 0001 1000
31: 0=>no operation 0010 0001 1000
2: Shift right Product 0010 0000 1100
41: 0=>no operation 0010 0000 1100
2: Shift right Product 0010 0000 0110
Παράδειγμα: 2 * 3 (0010 * 0011)
87Ενότητα 4 - Αριθμητική για υπολογιστές
Δεύτερη επανάληψη αλγόριθμου διαίρεσης• Μόνο ο μισός χώρος του Divisor περιέχει χρήσιμες πληροφορίες, έτσι τόσο ο divisor όσο και η ALU μπορούν να χωριστούν στη μέση. •Η μετακίνηση του Remainder αριστερά αντί για την μετακίνηση του Divisorστα δεξιά, παράγει την ίδια ευθυγράμμιση, και πετυχαίνει τον σκοπό της απλοποίησης υλικού για την ALU και τον Divisor.
Η δεύτερη έκδοση υλικού της διαίρεσης
88Ενότητα 4 - Αριθμητική για υπολογιστές
Τελευταία επανάληψη αλγόριθμου διαίρεσης
• Ο καταχωρητής Quotient μπορεί να αφαιρεθεί αν μετακινήσουμε τα bits του Quotient στον καταχωρητή Remainder.
Η τελευταία έκδοση υλικού της διαίρεσης
90Ενότητα 4 - Αριθμητική για υπολογιστές
• Παράδειγμα 7 / 2 (0000 0111 / 0010)
Iteration Step Divisor Remainder
0Initial values 0010 0000 0111
Shift Rem left 1 0010 0000 1110
12: Rem = Rem – Div 0010 1110 1110
3b: Rem < 0 => + Div, sll R, R0 = 0 0010 0001 1100
22: Rem = Rem – Div 0010 1111 1100
3b: Rem < 0 => + Div, sll R, R0 = 0 0010 0011 1000
32: Rem = Rem – Div 0010 0001 1000
3a: Rem ≥ 0 => sll R, R0 = 1 0010 0011 0001
42: 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