Κεφ. 1-2, Α - ucychapter3-2016.pdfΕνδιάμεση 19.10 Β205 Κεφ. 1-2, Παράρτημα...

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

Upload: others

Post on 08-Feb-2020

20 views

Category:

Documents


0 download

TRANSCRIPT

Ενδιάμεση 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:

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

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

1-bit ALU η οποία εκτελεί τις λειτουργίες

– AND, – OR, και – πρόσθεσης

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

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

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.

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

Η καινούρια 1-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 πύλη η οποία θα μαζεύει όλες τις εξόδους.

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

Η τελική 32 – bit ALU

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

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

123x 2137

861369

123246 +262851

37Ενότητα 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 πράξεις σειριακά

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

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

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

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.

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

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

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

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

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

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

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

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

Η δεύτερη έκδοση υλικού για το πολλαπλασιασμό

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

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

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.

Η Τρίτη έκδοση του υλικού του πολλαπλασιασμού

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

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

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.

Η τελευταία έκδοση υλικού της διαίρεσης

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

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

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