140
ARITHMETIC AND LOGIC IN COMPUTER SYSTEMS Νταμπίτζιας Φώτιος Καραλής Πασχάλης Χατζής Νικόλαος Credits to: Mi Lu, Texas A&M university

8 Computer Arithmetics

  • Upload
    thmmy

  • View
    179

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 8 Computer Arithmetics

ARITHMETIC AND LOGIC IN COMPUTER

SYSTEMSΝταμπίτζιας Φώτιος Καραλής Πασχάλης

Χατζής Νικόλαος

Credits to:Mi Lu,

Texas A&M university

Page 2: 8 Computer Arithmetics

ARITHMETIC AND LOGIC IN COMPUTER SYSTEMS

Στόχοι της διάλεξης:● Η κατανόηση των διάφορων αριθμητικών συστημάτων που

χρησιμοποιούνται στα υπολογιστικά(και ευρύτερα στα ψηφιακά) συστήματα.

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

διαίρεσης (όπως η χωρική και χρονική πολυπλοκότητα).● Η μελέτη του υλικού με το οποίο τα παραπάνω συστήματα

υλοποιούνται.● Ο προβληματισμός πάνω στις

παραχωρήσεις(κόστους,χώρου,χρόνου κ.α) που πρέπει να κάνει ο μηχανικός,δεδομένης της υφιστάμενης τεχνολογίας, για να

υλοποιήσει τις παραπάνω μονάδες.● Με την ανάπτυξη της τεχνολογίας των VLSI(32nm κατά την

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

συστήματα συναγωνίζονται για την μέγιστη αποτελεσματικότητα

Page 3: 8 Computer Arithmetics

Κεφάλαιο 1οΑριθμητικά συστήματα

Α)Conventional Radic Number System του αριθμού Ν

,με το r να ονομάζεται βάση(radix) του συστήματος

Έτσι λοιπόν,ο αριθμός Ν μπορεί να εμφανιστεί ώς

Πχ

0in−1d i∈{0,1.... , r−1}

Page 4: 8 Computer Arithmetics

Θέματα προς συζήτηση

1) Πόσα bits χρειάζονται για να κωδικοποιηθεί ένας αριθμός λ? απάντηση:

2)Πως μετατρέπουμε έναν αριθμό από και προς του conventional radix system?

απάντηση: Διαιρούμε συνεχόμενα τον αριθμό μας με την βάση(r),και το υπόλοιπο της ευκλείδιας διαίρεσης είναι το“δεξιότερο“ ψηφίο του αριθμού μας.Η μετατροπή τελειώνει όταν έχουμε κάνει την

παραπάνω διαδικασία n-1 φορές

log2 λ1

Page 5: 8 Computer Arithmetics

Προσημασμένοι αριθμοί

Μέχρι τώρα ασχοληθήκαμε με μη-προσημασμένους αριθμούς.Όμως,όπως είναι φυσιολογικό, υπάρχει η ανάγκη για

αναπαράσταση ΚΑΙ προσημασμένων αριθμών. Αυτό γίνεται με τις παρακάτω τεχνικές:

● Πρόσημο-Τιμή● Μειωμένο συμπλήρωμα της βάσης(diminished radix compliment)

● Συμπλήρωμα της βάσης(radix compliment)● Προσημασμένα ψηφία

● Πόλωση● RNS(Residue Number System)

● LNS(Logarithmic Number System)

Page 6: 8 Computer Arithmetics

Μέθοδος Πρόσημο-Τιμή

Για να ξεχωρίσουμε τους θετικούς από τους αρνητικούς αριθμούς,το MSB παίρνει τιμές σύμφωνα με τον παρακάτω νόμο

Πχ

Απαραίτητη κρίνεται και η εισαγωγή του μέτρου του αριθμού, που προφανώς ορίζεται ως εξής

Page 7: 8 Computer Arithmetics

Diminished Radix Compliment

Αλλιώς ονομάζεται συμπλήρωμα του (r-1), και ορίζεται ως εξής

Αλλιώς,συμβολίζεται ως εξής:

Όπου N το σύνολο των ψηφίων του αριθμούπχ

Page 8: 8 Computer Arithmetics

Radix Compliment

Ονομάζεται και συμπλήρωμα του r και ορίζεται ως

Εναλλακτικά θα το δούμε παρακάτω ως:

πχ

Page 9: 8 Computer Arithmetics

Αριθμοί των 4 Bit στα διάφορα αριθμητικά

συστήματα

Page 10: 8 Computer Arithmetics

Signed-Digit

Στο σύστημα αυτό,κάθε ψηφίο μπορεί να έχει είτε θετική, είτε αρνητική τιμή. Δηλαδή, για κάθε r>1 έχουμε:

Σημείωση: Η επιλογή του α έγινε έτσι ώστε το σύστημα μας να είναι non-redudant(δηλαδή να μην περιέχει περιττά ψηφία),καθώς και να

είναι πλήρες(κάθε αριθμός,εντός κάποιον ορίων, να μπορεί να απεικονιστεί). Η απόδειξη παραλείπεται.

Page 11: 8 Computer Arithmetics

Singed Digit, continued

ΠΡΟΣΟΧΗ!Στο signed digit ένας αριθμός ΔΕΝ αντιστοιχείται ένα προς ένα με

μια σειρά από ψηφία. ΠχΓια να παραστήσουμε τον ακέραιο -3 (Χ=-3 , n=4, r=2, κ(δεκαδικά

ψηφία)=0 ) στο σύστημα αυτό έχουμε τους εξής τρόπους:

Page 12: 8 Computer Arithmetics

Floating point numbers

Μέχρι τώρα έχουμε περιγράψει αριθμούς (προσημασμένους ή μη, δεκαδικούς ή όχι) στους οποίους η τυχόν υποδιαστολή βρίσκονταν

σε σταθερό σημείο(fixed-point). Επειδή όμως στα υπολογιστικά συστήματα η υποδιαστολή δεν “βρίσκεται“ πουθενά,αλλά η ύπαρξη της και η θέση της είναι ένα προσυμφωνημένο “μυστικό“ ανάμεσα

στον προγραμματιστή και στον υπολογιστή, αναπτύχθηκαν προτόκολλα που επιτρέπουν την υποδιαστολή να ολισθαίνει κατά μερικά ψηφία μέσα σε μια σειρά από ψηφία.Γενικότερα, όπως είναι

γνωστό, χρησιμοποιούνται οι έννοιες της mantissa(Μ)και του exponent(E)

Page 13: 8 Computer Arithmetics

Normalization

Για να παραστήσουμε τον ίδιο αριθμό με τα λιγότερα δυνατά ψηφία, έχει εφευρεθεί η διαδικασία της κανονικοποίησης, που με λίγα λόγια

υπαγορεύει ότι το MSB(Most Significant Bit) της mantissa ΔΕΝ μπορεί να είναι 0.

Πχ

Έτσι,η mantissa για ένα string από k bits μπορεί να πάρει τιμές

Page 14: 8 Computer Arithmetics

Residue Number System(RNS)

Έστω ακέραιος Χ=(x1,x2....xn) με κάθε xi>1 . Έστω ένα σετ αριθμών mi=(m1,m2...mn) που αποκαλείται ομάδα υπόλοιπων. Κάθε αριθμός

xi αναπαρίσταται με τον εξής τρόπο:

πχΓια να παραστήσουμε τον αριθμό 9 στο RNS έχουμε:

Και άρα η RNS αναπαράσταση είναι η (104)Καλό θα είναι τα στοιχεία του mi να μην έχουν κοινό διαιρέτη.

Όπως φαίνεται εύκολα, υπάρχει tradeoff ανάμεσα στον αριθμό των mi και στο μέγεθός τους

xi=X mod mi

Page 15: 8 Computer Arithmetics

Logarithmic Number System(LNS)

Δεδομένου ενός μη-προσημασμένου αριθμού Χ,παίρνουμε τον λογάριθμο του Χ με βάση το r. Αν η αναπαράσταση αυτή του

Χ(εφεξής Lx) είναι σε δυαδική μορφή με n bit για το ακέραιο μέρος και k bits για το δεκαδικό,τότε λέμε ότι η LNS αναπαράσταση του Χ

είναι η :

Και προφανώς,ο αριθμός Χ ανακτάται ως εξής:

ΠχΚαι άρα

Page 16: 8 Computer Arithmetics

Πλεονεκτήματα/ Μειονεκτήματα

RNS: Πρακτικά το RNS μετατρέπει έναν μεγάλο ακέραιο σε ένα αριθμό από μικρότερους ακέραιους.Έτσι,όταν θέλουμε να κάνουμε

πράξεις ανάμεσα σε 2 μεγάλους ακέραιους το RNS μας επιτρέπει να κάνουμε αντί για 1 μεγάλη πράξη πολλές παράλληλες με μικρούς

αριθμούς.LNS:Απλοποιεί τρομερά τον πολλαπλασιασμό και την διαίρεση,αφού

οι πράξεις αυτές γίνονται με το ίδιο κύκλωμα που γίνεται η πρόσθεση. Όμως η πρόσθεση πλέον απαιτεί περισσότερους πόρους από τις κλασσικές μεθόδους. Κλασική περίπτωση χρήσης του LNS

είναι για Hidden Markov Models(πχ αλγόριθμος viterby)

Page 17: 8 Computer Arithmetics

Κυκλώματα Πρόσθεσης και

αφαίρεσης

Στο κεφάλαιο αυτό ασχολούμαστε με σειριακά κυκλώματα πρόσθεσης και αφαίρεσης στα διάφορα αριθμητικά συστήματα που

έχουν αναφερθεί. Πρώτα όμως κρίνεται σκόπιμο να αναφερθούν μερικοί ορισμοί:

➔ Time complexity Δτ(πολυπλοκότητα χρόνου): Ο χρόνος διάδοσης σήματος σε ένα ψηφιακό κύκλωμα. Βασική μονάδα μέτρησης είναι το

Δg που είναι η χρονική καθυστέρηση που έχει το σήμα μέχρι να εξέλθει από μια πύλη NAND ή NOR

Page 18: 8 Computer Arithmetics

Ορισμοί

➔ Area complexity(χωρική πολυπλοκότητα) Ατ: Είναι ο χώρος που καταλαμβάνει ένα ψηφιακό κύκλωμα(αν σχεδιαστεί σε 1 μόνο layer).

Βασική μονάδα μέτρησης είναι το 1 Αg που είναι ο χώρος που καταλαμβάνει μια πύλη NAND ή NOR.

Page 19: 8 Computer Arithmetics

Time and area Complexities

Page 20: 8 Computer Arithmetics

Half Adder

Page 21: 8 Computer Arithmetics

Full Adder

Page 22: 8 Computer Arithmetics

Single bit full adder

Page 23: 8 Computer Arithmetics

Single bit AOI(And- OR- invert) adder

Page 24: 8 Computer Arithmetics

Αφαίρεση

Έστω αφαίρεση , με το borrow-out(το αντίστοιχο του carry) bit . Οι λογικές συναρτήσεις που περιγράφουν την αφαίρεση

αυτή είναι

Προφανώς,το πως γίνεται η αφαίρεση εξαρτάται από το πιο αριθμητικό σύστημα χρησιμοποιούμε.Ο πιο γρήγορος τρόπος για να

γίνει η αφαίρεση χωρίς χρήση ειδικού hardware(πέραν αυτού που χρησιμοποιείται για πρόσθεση) είναι η πράξη A-Β να γίνει Α+(-Β)

ai−bi=d il i

Page 25: 8 Computer Arithmetics

Subtractor circuit

Page 26: 8 Computer Arithmetics

Αφαίρεση σε 1s-complement

Negation Circuit with enable

Page 27: 8 Computer Arithmetics

Αφαίρεση σε 2s complement

Για να βρούμε το συμπλήρωμα του 2 ενός αριθμού,πρώτα αλλάζουμε όλα τα 0 σε 1 και όλα τα 1 σε 0 και μετά προσθέτουμε το

1. Έτσι λοιπόν,το hardware κύκλωμα θα αποτελείται από ένα 1's complement circuit και από ένα κύκλωμα που προσθέτει μονάδα στο

αποτέλεσμα. Η χρονική πολυπλοκότητα είναι

Ενώ η χωρική πολυπλοκότητα

Page 28: 8 Computer Arithmetics

Αφαίρεση σε 2s complement no2

Το σύστημα που περιγράφηκε στην προηγούμενη διαφάνεια είναι το εξής:

Page 29: 8 Computer Arithmetics

Αφαίρεση,continued

Εναλλακτική υλοποίηση

Page 30: 8 Computer Arithmetics

Αφαίρεση,continuedΗ χρονική και χωρική πολυπλοκότητα υπολογίζεται ως εξής:

Από την οποία φαίνεται ότι αυτή η υλοποίηση(συμπλήρωμα του 2) είναι προτιμότερη από την προηγούμενη(συμπλήρωμα του 1).

Page 31: 8 Computer Arithmetics

Full 1bit adder/ subtractor with enable-M

Page 32: 8 Computer Arithmetics

Full 1bit adder/subtractor

Όπως μπορούμε να παρατηρήσουμε,το παραπάνω κύκλωμα εκτελεί πρόσθεση αν Μ=0 και αφαίρεση αν Μ=1. Άρα το Μ λειτουργεί

ουσιαστικά ως ελεγκτής της πράξης που θα γίνει.

Page 33: 8 Computer Arithmetics

Overflow

Προφανώς,overflow(υπερχείληση) συμβαίνει όταν το carry του MSB ή του προηγούμενου του ψηφίου(σε περίπτωση προσημασμένου

αριθμού) είναι 1.Για να μελετήσουμε μαθηματικά το σε ποιες περιπτώσεις γίνεται overflow,χωρίζουμε το πρόβλημα σε

υποκατηγορίες. Για συντομία(και για πρακτικούς λόγους) μελετάμε το overflow μόνο σε 2's complement 2 προσθετέων(Α και Β) που

έχουν n bits ο καθένας.

Page 34: 8 Computer Arithmetics

Περιπτώσεις overflow

● Αν Α,Β θετικά

● Αν Α,Β αρνητικά

● Α θετικό και Β αρνητικό

Page 35: 8 Computer Arithmetics

Ripple Carry AddersΑυτή η κατηγορία των adders βασίζεται στην λογική ότι για να

προσθέσουμε έναν αριθμό n bits το carry out του LSB συνδέεται με το carry in του επόμενου bit κοκ.Όπως φαίνεται στην επόμενη διαφάνεια,ειδική μέριμνα λαμβάνεται για περίπτωση overflow.

Page 36: 8 Computer Arithmetics

Ripple Carry schematic

Page 37: 8 Computer Arithmetics

Ones complemet addition

Για την εκτέλεση της πράξης Α+Β διακρίνουμε τις εξής περιπτώσεις:1) Α και Β θετικά: Στην περίπτωση αυτή η πρόσθεση γίνεται με την

ίδια μεθοδολογία με αυτή του συμπληρώματος του 2.2) Α και Β αρνητικά:

Προφανώς για να είναι σωστό το αποτέλεσμα,θα πρέπει να προστεθεί 1.Γι'αυτό υπάρχει η διάταξη end-arround carry(Cn στο

προηγούμενο σχήμα)3) Α αρνητικό και Β θετικό(|Α|>|Β|)

Χωρίς την διάταξη end-arround Carry,το αποτέλεσμα είναι

Και άρα το end-arround carry είναι περιττό

Page 38: 8 Computer Arithmetics

Ones complemet addition

4) Α αρνητικό, Β θετικό και |Α|<|Β|(χωρίς end arround carry)Το αποτέλεσμα θα είναι:

Μετά από την mod 2^n (συμπλήρωμα 1) μετατροπή,το κύκλωμα θα βγάλει ως έξοδο |Β|-|Α|-1, ενώ θα έπρεπε να βγάλει |Β|-|Α|. Για να λύσουμε το πρόβλημα αυτό,κάνουμε implement ένα end arround

carry

Τέλος,η συνολική χρονική πολυπλοκότητα του FA 1's complement είναι

Page 39: 8 Computer Arithmetics

Sign- Magnitude addition

Page 40: 8 Computer Arithmetics

Sign- Magnitude addition

Pre-Complement(P): Βρίσκει το συμπλήρωμα του 1 πριν την εκτέλεση της πράξης

Post-Complement(Q): Βρίσκει το συμπλήρωμα του 1 μετά την εκτέλεση της πράξης ,χρησιμοποιείται στην αφαίρεση αν |Β|>=|Α|

Εύρεση προσήμου πράξης:Ομόσημοι → το πρόσημο των 2 τελεστών

Ετερόσημοι → (|Β|>=|Α|)→ |Β|<Α|→

Page 41: 8 Computer Arithmetics

Sign- Magnitude addition

Page 42: 8 Computer Arithmetics

High Speed Adders- Conditional Sum

AdditionΣτην προσπάθεια μας για όσο το δυνατόν μεγαλύτερη ταχύτητα στις

πράξεις,αναγκαζόμαστε να παραλληλοποιήσουμε τις διαδικασίες όσο περισσότερο γίνεται. Το Conditional Sum Addition είναι μια

μέθοδος να προσθέτουμε δύο-δύο bits και ,εφόσον δεν μπορούμε να ξέρουμε το carry bit από πριν,βγάζουμε όλους τους πιθανούς

συνδιασμούς.

Συμβολίζουμε με το αποτέλεσμα της πράξης ανάμεσα σε 2 bit αν υποθέσουμε ότι το carry-in είναι 0. Αν υποθέσουμε ότι το carry in

είναι 1, το σύμβολο γίνεται

Έχουμε λοιπόν:

Page 43: 8 Computer Arithmetics

Conditional Sum Addition

Page 44: 8 Computer Arithmetics

Circuit of Conditional Sum

Page 45: 8 Computer Arithmetics

Carry Completion Sensing Addition

(CCSA)Η γραμική χρονική καθυστέρηση των rippley carry adders ,που

οφείλεται στην καθυστέρηση της “μεταφοράς„ του carry από το LSB στο MSB(δηλαδή του χρόνου που -στην χειρότερη περίπτωση- κάνει ο FA του MSB να υπολογίσει το carry-out και το σωστό αποτέλεσμα μας οδήγησε στην υλοποίηση CCSA's των οποίων η μέση τιμή του

χρόνου ολοκλήρωσης μιας πράξης είναι μικρότερη.

Στα CCSA's ορίζουμε 2 ειδών carrys, τα Independent(IC) και τα Dependent(DC).Όπως φαίνεται παρακάτω,τα IC carry μπορούν να οριστούν ταυτόχρονα(παράλληλα) για κάθε bit του αποτελέσματος

χωρίς να περιμένουμε να έρθει το προηγούμενο carry,αντίθετα με τα DC τα οποία χρειάζονται γνώση του IC ή/και του DC του

προηγούμενου bit.

Page 46: 8 Computer Arithmetics

CCSA additionΒλέπουμε ότι τα IC carry τα οποία δημιουργούνται παράλληλα

επιταχύνουν συνήθως την πρόσθεση καθώς η μεγαλύτερη αναμονή για carry είναι ίση με την μεγαλύτερη απόσταση ανάμεσα σε ένα IC

και σε ένα DC carry.Εκτέλεση της πράξης:

Βήμα 1ο: Δημιουργούμε τα IC carryΒήμα 2ο: Δημιουργούμε τα DC carry

Βήμα 3ο: Προσθέτουμε τους 2 αριθμούς μαζί με τα IC και DC carrys με mod2(δηλαδή αγνοούμε τα τυχόν carry που θα προκείψουν από

την πρόσθεση των 2 αρχικών αριθμών)

Page 47: 8 Computer Arithmetics

CCSA circuit

Page 48: 8 Computer Arithmetics

CCSA complexities

Page 49: 8 Computer Arithmetics

Carry Look-Ahead Adition(CLA)

Κάνοντας ένα βήμα παραπέρα από τις παραπάνω υλοποιήσεις, δημιουργήθηκε το CLA το οποίο μπορεί να δημιουργήσει παράλληλα

όλα τα carrys. Υπάρχουν διάφοροι τρόποι να γίνει αυτό, όπως το 1)Carry-Lookahead adder

2)Carry- Blockahead adder

Page 50: 8 Computer Arithmetics

Carry lookahead adder

Έστω Α και Β οι 2 προσθεταίοι των n bits.Ορίζουμε την συνάρτηση Carry generation ως Ορίζουμε επίσης και την Carry

propagation function ωςH carry generation μας δίνει ένα μέτρο της πιθανότητας εμφάνισης carry στην θέση i, ενώ η συνάρτηση carry propagation μας δίνει ένα μέτρο της πιθανότητας το carry in του bit i να μεταφερθεί ως carry in

στο bit i+1.Έτσι έχουμε

G i=Ai⋅Bi P i=Ai exor Bi

Page 51: 8 Computer Arithmetics

CLA

To είναι πλέον ανεξάρτητο από το C i1 C i

Page 52: 8 Computer Arithmetics

Carry Look-Ahead Adder schematic

Page 53: 8 Computer Arithmetics

Carry-Save adders(CSA)

Με την εξέλιξη της τεχνολογίας η απαίτηση για πρόσθεση όχι 2, αλλά περισσοτέρων αριθμών παράλληλα έγινε επιτακτική ανάγκη. Η

λογική πίσω από αυτή την υλοποίηση είναι να μην περιμένουμε το carry-out της πρώτης πρόσθεσης να τελειώσει πριν αρχίσουμε την

δεύτερη,αλλά η δεύτερη πρόσθεση να αρχίσει ήδη κοκ.Στο τέλος όλα τα carry προστίθενται(και άρα αν οι αριθμοί έχουν πολλά bits τότε η

υλοποίηση αρχίζει και γίνεται αρκετά αργή)

Page 54: 8 Computer Arithmetics

CSA algorithm

Page 55: 8 Computer Arithmetics

CSA circuit

Page 56: 8 Computer Arithmetics

CSA vs CLA

Page 57: 8 Computer Arithmetics

Bit-partitioned multiple addition

Στην συγκεκριμένη μέθοδο, τα ψηφία προστίθενται στήλη-στήλη, με κάθε αθροιστή να αναλαμβάνει την πρόσθεση ενός bit κάθε φορά.Ο

αριθμός των bits που είναι στο λογικό 1 υπολογίζεται από έναν αθροιστή στήλης(υλοποιείται συνήθως με ROM ή PLA).Ύστερα,οι

έξοδοι προσθέτονται σειριακά(αφού βάλουμε έναν συντελεστή βαρύτητας σε κάθε στήλη και τον κάνουμε ένα left shift). Ένα

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

Page 58: 8 Computer Arithmetics

Bit partitioned addition of 2 7-digit numbers

Πρόσθεση 7 αριθμών των 4 bit

Page 59: 8 Computer Arithmetics

Bit partitioned Adder

Page 60: 8 Computer Arithmetics

Σύγκριση απόδοσης

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

χωρικής πολυπλοκότητας. Υπάρχουν όμως και άλλα πολύ σημαντικά μεγέθη όπως η καταναλισκόμενη ισχύς,τα οποία για 64 bit αθροιστές φαίνονται στα παρακάτω σχήματα. Αξίζει να σημειωθεί όμως ότι για λόγους πληρότητας της εργασίας στο πίνακα υπάρχουν και αλγόριθμοι παράλληλης άθροισης που

δεν αναλύθηκαν για λόγους εξικονόμησης χώρου.

Page 61: 8 Computer Arithmetics

Σύγκριση απόδοσης

Page 62: 8 Computer Arithmetics

Χρήσιμα LinksLNS VHDL ALGORITHMS :

http://www.ens-lyon.fr/LIP/Arenaire/Ware/FPLibrary/RNS VHDL ALGORITHMS:

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.5398C++ of VHDL for the transformation of parallel algorithms:

http://www.eda.org/VIUF_proc/Fall95/ANDERSON_R95B.PDFVHDL carry look-ahead adder(και άλλα πολλά):

http://www.altera.com/support/examples/vhdl/v_cl_addr.htmlPerformance Analysis of fast adders using VHDL:

http://www.computer.org/portal/web/csdl/doi/10.1109/ARTCom.2009.132

Page 63: 8 Computer Arithmetics

VHDL codes

Στις επόμενες διαφάνειες αυτές θα προσπαθήσουμε να δώσουμε παραδείγματα στην VHDL για τους διάφορους

τύπους αθροιστών που αναφέρθηκαν παρακάτω. Αξίζει να σημειωθεί ότι προαπαιτούμενο για την ανάγνωση του

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

Επίσης, όπου κρίνεται σκόπιμο θα υπάρχουν σχόλια στον κώδικα.Τέλος οι αλγόριθμοί παρατίθενται όχι με την μορφή που αναλύθηκαν, αλλά από τον ευκολότερο (σε μέγεθος-

δυσκολία κώδικα) στον δυσκολότερο.

Page 64: 8 Computer Arithmetics

Carry Look-Ahead adder

Στο παράδειγμα αυτό θα υλοποιηθεί σε vhdl ένας 8bit Carry look Ahead Adder. Το carry,όπως έχουμε μάθει, προκύπτει

παράλληλα με την βοήθεια των συναρτήσεων P και G. Η υλοποίηση αυτή μπορεί να γίνει με μια λογική AND-OR 2

επιπέδων και έτσι μειώνεται αισθητά η καθηστέρηση δημιουργίας του carry.

Page 65: 8 Computer Arithmetics

CLA VHDL implementation

LIBRARY ieee;USE ieee.std_logic_1164.ALL;

ENTITY c_l_addr IS PORT ( x_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); y_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); carry_in : IN STD_LOGIC; sum : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); carry_out : OUT STD_LOGIC );END c_l_addr;

ARCHITECTURE behavioral OF c_l_addr IS

SIGNAL h_sum : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL carry_generate : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL carry_propagate : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL carry_in_internal : STD_LOGIC_VECTOR(7 DOWNTO 1);

Page 66: 8 Computer Arithmetics

CLA VHDL implementation

BEGIN h_sum <= x_in XOR y_in; carry_generate <= x_in AND y_in; carry_propagate <= x_in OR y_in; PROCESS (carry_generate,carry_propagate,carry_in_internal) BEGIN carry_in_internal(1) <= carry_generate(0) OR (carry_propagate(0) AND carry_in); inst: FOR i IN 1 TO 6 LOOP carry_in_internal(i+1) <= carry_generate(i) OR (carry_propagate(i) AND carry_in_internal(i)); END LOOP; carry_out <= carry_generate(7) OR (carry_propagate(7) AND carry_in_internal(7)); END PROCESS;

sum(0) <= h_sum(0) XOR carry_in; sum(7 DOWNTO 1) <= h_sum(7 DOWNTO 1) XOR carry_in_internal(7 DOWNTO 1);END behavioral;

Page 67: 8 Computer Arithmetics

Ripple Carry Adder

Στο συγκεκριμένο παράδειγμα θα υλοποιηθεί ένας Ripple Carry Adder με την βοήθεια της συνάρτηση του πλήρη

αθροιστή. Στην βιβλιοθήκη της altera, ο πλήρης αθροιστής υπάρχει στο αρχείο full_add.vhd, όμως κρίνεται σκόπιμο να

παρουσιαστεί και εδώ.Τέλος, να σημειώσουμε ότι η υλοποίηση δίνει προτεραιότητα στην όσο το δυνατό μικρότερη

χρησιμοποίηση λογικών πόρων, και άρα είναι κάπως πιο αργή από άλλες υλοποιήσεις του Ripple Carry Adder

Page 68: 8 Computer Arithmetics

Ripple Carry Adder VHDL Example

LIBRARY altera;USE altera.maxplus2.carry;

LIBRARY ieee;USE ieee.std_logic_1164.ALL;

LIBRARY WORK;USE WORK.usr_def.ALL;

ENTITY f_add8 IS PORT( x_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); y_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); c_in : IN STD_LOGIC; sum : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); c_out : OUT STD_LOGIC);END f_add8;

Page 69: 8 Computer Arithmetics

Ripple Carry Adder VHDL Example

ARCHITECTURE struct OF f_add8 ISSIGNAL im : STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL imi : STD_LOGIC_VECTOR(6 DOWNTO 0);BEGIN c0 : full_add PORT MAP (x_in(0),y_in(0),c_in,sum(0),im(0)); c01 : carry PORT MAP (im(0),imi(0)); c : FOR i IN 1 TO 6 GENERATE c1to6: full_add PORT MAP (x_in(i),y_in(i), imi(i-1),sum(i),im(i)); c11to16: carry PORT MAP (im(i),imi(i)); END GENERATE; c7 : full_add PORT MAP (x_in(7),y_in(7), imi(6),sum(7),c_out);END struct;

Page 70: 8 Computer Arithmetics

Full Adder VHDLΣτον ripple carry adder έγινε η χρήση του πλήρη αθροιστή(full

adder) του οποίου ο κώδικας στην VHDL είναι:

LIBRARY ieee;USE ieee.std_logic_1164.ALL;

ENTITY full_add IS PORT( a : IN STD_LOGIC; b : IN STD_LOGIC; c_in : IN STD_LOGIC; sum : OUT STD_LOGIC; c_out : OUT STD_LOGIC);END full_add;

ARCHITECTURE behv OF full_add ISBEGIN sum <= a XOR b XOR c_in; c_out <= (a AND b) OR (c_in AND (a OR b));END behv;

Page 71: 8 Computer Arithmetics

Conditional Sum Adder VHDL code

Στο επόμενο παράδειγμα θα υλοποιηθεί adder 2 αριθμών των 16 bits με την μέθοδο του Conditional Sum addition.Σύμφωνα με την θεωρία που αναπτύχθηκε παραπάνω,η πράξη θα γίνει

σε 4 βήματα.Βήμα 1ο:Όλα τα conditional sums και τα carries του i-ζεύγους

από bits δημιουργούνται.Βήμα 2ο: Τα bits του βήματος αυτού(level 2 bits) καθορίζονται

από το 1ο βήμα. Αρχικά, όλα τα bits του 1ο βήματος ομαδοποιούνται ανά 2. Το λιγότερο σημαντικό carry

χρησιμοποιείται για να επιλέξει ποιο άθροισμα και πιο carry της επόμενης θέσης θα μεταφερθεί στο 2ο βήμα

Page 72: 8 Computer Arithmetics

Conditional Sum Adder VHDL code

Βήμα 3ο: Ομοίως, τα carrys και τα αθροίσματα του 3ου επιπέδου καθορίζονται από τις εξόδους του 2ου επιπέδου.

Βήμα 4ο: Ομοίως με τα βήματα 2,3. Έτσι λοιπόν με μια τελευταία πρόσθεση έχουμε το επιθυμητό αποτέλεσμα. Ο κώδικας για την παραπάνω(16bit) υλοποίηση δίνεται στις

επόμενες διαφάνειες.

Page 73: 8 Computer Arithmetics

Conditional Sum Adder VHDL code

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity Adder_CS_16bit isport (a, b: in std_logic_vector(15 downto 0);cin: in std_logic;sum: out std_logic_vector(15 downto 0);cout: out std_logic);end Adder_CS_16bit;architecture behavioral of Adder_CS_16bit issignal s10: std_logic_vector(15 downto 0) := "0000000000000000";signal s11: std_logic_vector(15 downto 0) := "0000000000000000";signal c10: std_logic_vector(15 downto 0) := "0000000000000000";signal c11: std_logic_vector(15 downto 0) := "0000000000000000";signal s20: std_logic_vector(15 downto 0) := "0000000000000000";signal s21: std_logic_vector(15 downto 0) := "0000000000000000";signal c20: std_logic_vector(15 downto 0) := "0000000000000000";signal c21: std_logic_vector(15 downto 0) := "0000000000000000";signal s30: std_logic_vector(15 downto 0) := "0000000000000000";signal s31: std_logic_vector(15 downto 0) := "0000000000000000";signal c30: std_logic_vector(15 downto 0) := "0000000000000000";signal c31: std_logic_vector(15 downto 0) := "0000000000000000";signal s40: std_logic_vector(15 downto 0) := "0000000000000000";signal s41: std_logic_vector(15 downto 0) := "0000000000000000";signal c40: std_logic_vector(15 downto 0) := "0000000000000000";signal c41: std_logic_vector(15 downto 0) := "0000000000000000";signal P: std_logic := '0';signal G: std_logic := '0';

Page 74: 8 Computer Arithmetics

Conditional Sum Adder VHDL code

begin-- - 1Κατασκευήβασικούκελιούπουκάνει τηνπρόσθεση βήμα οprocess (a, b)beginP <= a(0) xor b(0);G <= a(0) and b(0);end process;process (a, b, P, G, cin)begins10(0) <= P xor cin;c10(0) <= G or (P and cin);for i in 1 to a'length - 1 loops10(i) <= a(i) xor b(i);c10(i) <= a(i) and b(i);c11(i) <= a(i) or b(i);end loop;end process;process (s10)begins11 <= not s10;end process;

Page 75: 8 Computer Arithmetics

Conditional Sum Adder VHDL code

-- 2Βήμα οprocess (s10, s11, c10, c11)begins20(0) <= s10(0);if c10(0) = '1' thens20(1) <= s11(1);c20(1) <= c11(1);elsif c10(0) = '0' thens20(1) <= s10(1);c20(1) <= c10(1);end if;for i in 2 to a'length - 1 loopif (i mod 2 = 0) thens20(i) <= s10(i);s21(i) <= s11(i);if c10(i) = '1' thens20(i+1) <= s11(i+1);c20(i+1) <= c11(i+1);elsif c10(i) = '0' thens20(i+1) <= s10(i+1);c20(i+1) <= c10(i+1);end if;

Page 76: 8 Computer Arithmetics

Conditional Sum Adder VHDL code

if c11(i) = '0' thens21(i+1) <= s10(i+1);c21(i+1) <= c10(i+1);elsif c11(i) = '1' thens21(i+1) <= s11(i+1);c21(i+1) <= c11(i+1);end if;end if;end loop;end process;-- 3Βήμα οprocess (s20, s21, c20, c21)begins30(1 downto 0) <= s20(1 downto 0);if c20(1) = '1' thens30(3 downto 2) <= s21(3 downto 2);c30(3) <= c21(3);elsif c20(1) = '0' thens30(3 downto 2) <= s20(3 downto 2);c30(3) <= c20(3);end if;

Page 77: 8 Computer Arithmetics

Conditional Sum Adder VHDL code

for i in 4 to a'length - 1 loopif (i mod 4 = 1) thens30(i downto i-1) <= s20(i downto i-1);s31(i downto i-1) <= s21(i downto i-1);if c20(i) = '1' thens30(i+2 downto i+1) <= s21(i+2 downto i+1);c30(i+2) <= c21(i+2);elsif c20(i) = '0' thens30(i+2 downto i+1) <= s20(i+2 downto i+1);c30(i+2) <= c20(i+2);end if;if c21(i) = '0' thens31(i+2 downto i+1) <= s20(i+2 downto i+1);c31(i+2) <= c20(i+2);elsif c21(i) = '1' thens31(i+2 downto i+1) <= s21(i+2 downto i+1);c31(i+2) <= c21(i+2);end if;end if;end loop;end process;

Page 78: 8 Computer Arithmetics

Conditional Sum Adder VHDL code

-- 4Βήμα οprocess (s30, s31, c30, c31)begins40(3 downto 0) <= s30(3 downto 0);if c30(3) = '1' thens40(7 downto 4) <= s31(7 downto 4);c40(7) <= c31(7);elsif c30(3) = '0' thens40(7 downto 4) <= s30(7 downto 4);c40(7) <= c30(7);end if;-- level - 4process (s30, s31, c30, c31)begins40(3 downto 0) <= s30(3 downto 0);if c30(3) = '1' thens40(7 downto 4) <= s31(7 downto 4);c40(7) <= c31(7);elsif c30(3) = '0' thens40(7 downto 4) <= s30(7 downto 4);c40(7) <= c30(7);end if;

Page 79: 8 Computer Arithmetics

Conditional Sum Adder VHDL code

c40(i+4) <= c30(i+4);end if;if c31(i) = '0' thens41(i+4 downto i+1) <= s30(i+4 downto i+1);c41(i+4) <= c30(i+4);elsif c31(i) = '1' thens41(i+4 downto i+1) <= s31(i+4 downto i+1);c41(i+4) <= c31(i+4);end if;end if;end loop;end process;

Page 80: 8 Computer Arithmetics

Conditional Sum Adder VHDL code

-- 5βήμα οprocess (s40, s41, c40, c41)beginsum(7 downto 0) <= s40(7 downto 0);if c40(7) = '1' thensum(15 downto 8) <= s41(15 downto 8);cout <= c41(15);elsif c40(7) = '0' thensum(15 downto 8) <= s40(15 downto 8);cout <= c40(15);end if;end process;end behavioral;

Page 81: 8 Computer Arithmetics

Στο κεφάλαιο αυτό θα ασχοληθούμε με τις τεχνικές του διαδοχικού πολλαπλασιασμού παρουσιάζοντας τεχνικές τόσο υλοποίησης όσο και επιτάχυνσης της εν λόγω διαδικασίας.Οι αλγόριθμοι που θα συζητηθούν παρακάτω βασίζονται στην προσέγγιση add-shift.Πρώτα όμως θα αναφέρουμε μερικούς συμβολισμούς που θα χρησιμοποιηθούν στο παρόν κεφαλαίο:

Sequential Sequential MultiplicationMultiplication

Page 82: 8 Computer Arithmetics

SSigned & Unsignedigned & Unsigned MultiplicationMultiplication

Έστω A και B δύο μη προσημασμένοι n-bit αριθμοί.

Ο πολλαπλασιασμός P=A x B θα έχει σαν αποτέλεσμα έναν αριθμό P 2n-bit.

Στην περίπτωση που οι Α και Β είναι προσημασμένοι, το αποτέλεσμα P θα έχει 2(n-1)+1=2n-1 bits συμπεριλαμβανομένου και του bit προσήμου.

Για να έχουμε μια ομοιόμορφη απεικόνιση, προστίθεται στο αποτέλεσμα ένα εικονικό(dummy) bit μεταξύ του bit προσήμου και του most significant bit οπότε και προκύπτει ένας αριθμός 2n –bits.

Το εικονικό bit μπορεί να είναι είτε 0, είτε το αντίγραφο του bit προσήμου ανάλογα με τον αν η απεικόνιση του αριθμού είναι προσημασμένου μέτρου ή συμπληρώματος με βάση το ένα ή το δύο.

Page 83: 8 Computer Arithmetics

Pencil-And-Paper Pencil-And-Paper MultiplicationMultiplication

‹----------Partial Product

Κάθε Partial Product μπορεί να δημιουργηθεί με πύλες AND και στο τέλος το αποτέλεσμα θα προκύψει με την πρόσθεση τους.

Page 84: 8 Computer Arithmetics

Add-And-Shift Add-And-Shift ApproachApproach

Αντί να δημιουργούμε κάθε partial product χωριστά και ύστερα να τα προσθέτουμε όλα μαζί στο τέλος, προσθέτουμε κάθε partial product κατευθείαν στο τελικό ποσό αμέσως μετά τη δημιουργία του.

Εφόσον κάθε bit που εξετάζεται είναι υψηλότερο κατά μία θέση bit σε σχέση με το προηγούμενο, κάθε partial product που προστίθεται θα πρέπει να είναι κατά μία θέση bit αριστερά σε σχέση με το προηγούμενο.

O χρόνος καθυστέρησης μιας μονάδας indirect multiplication είναι:

Page 85: 8 Computer Arithmetics

Add-And-Shift Add-And-Shift ApproachApproach (cont.)(cont.)

Hardware for Sequential Multiplication

Register Occupation

Page 86: 8 Computer Arithmetics

Indirect Multiplication Indirect Multiplication SchemesSchemes

1. Unsigned Number Multiplication

2. Sign-Magnitude Number Multiplication

3. One’s Complement Number Multiplication

4. Two’s Complement Number Multiplication

Page 87: 8 Computer Arithmetics

Unsigned Number Unsigned Number MultiplicationMultiplication

H διαδικασία ολοκληρώνεται σε n+1 κύκλους(n ο αριθμός bit του κάθε αριθμού).

Ένας κύκλος C0 για την εγκατάσταση των δεδομένων στους καταχωρητές και C1,...,Cn κύκλοι για την εκτέλεση των πράξεων.

Page 88: 8 Computer Arithmetics

Sign-Magnitude Number Sign-Magnitude Number MultiplicationMultiplication

H διαδικασία ολοκληρώνεται σε n κύκλους.

Στον κύκλο C0 μαζί με την εγκατάσταση των δεδομένων στους καταχωρητές τα bit προσήμου των Α και Β φορτώνονται στα FF As και Bs

αντίστοιχα ενώ το MSB των καταχωρητών AX και MR τοποθετούνται στο μηδέν.

Το πρόσημο του αποτελέσματος υπολογίζεται στο τέλος από την πράξη A Bs sΔ

Page 89: 8 Computer Arithmetics

One’s Complement One’s Complement Number MultiplicationNumber Multiplication

H διαδικασία ολοκληρώνεται σε n+2 κύκλους.

Στον κύκλο C0 φορτώνονται τα δεδομένα στους καταχωρητές ενώ στον κύκλο C1 οι αρνητικοί αριθμοί μετατρέπονται στη μορφή προσημασμένου μέτρου.

Από τον κύκλο C2 μέχρι και τον Cn πραγματοποιείται η loop του πολλαπλασιασμού

Τέλος στον κύκλο Cn+1 το αποτέλεσμα ξαναμετατρέπεται στην μορφή συμπληρώματος του ένα.

Page 90: 8 Computer Arithmetics

Two’s Complement Two’s Complement Number MultiplicationNumber Multiplication

H διαδικασία ολοκληρώνεται σε n+4 κύκλους.

Στον κύκλο C0 φορτώνονται τα δεδομένα στους καταχωρητές, στον κύκλο C1 οι αρνητικοί αριθμοί μετατρέπονται σε συμπληρώματα του ένα ενώ στον κύκλο C2 μετατρέπονται στη μορφή προσημασμένου μέτρου.

Από τον κύκλο C3 μέχρι και τον Cn+1 πραγματοποιείται η loop του πολλαπλασιασμού

Τέλος στους κύκλους Cn+2 και Cn+3 πραγματοποιείται η αντίστροφη διαδικασία ώστε το αποτέλεσμα να επιστρέψει στην μορφή συμπληρώματος του δύο.

Page 91: 8 Computer Arithmetics

Robertson’s Signed Number Robertson’s Signed Number MultiplicationMultiplication

Οι διαδικασίες pre και post complemement που παρουσιάστηκαν προηγουμένως, παρόλη την λογική τους ορθότητα είναι ιδιαίτερα χρονοβόρες. Για το λόγο αυτό θα αναπτύξουμε παρακάτω δυο περιπτώσεις του πολλαπλασιασμού Robertson για προσημασμένους αριθμούς.

Page 92: 8 Computer Arithmetics

Negative Multiplicand Times Negative Multiplicand Times Positive MultiplierPositive Multiplier

Page 93: 8 Computer Arithmetics

Negative Multiplicand Times Negative Multiplicand Times Negative MultiplierNegative Multiplier

Page 94: 8 Computer Arithmetics

Recoding Recoding TechniqueTechnique

1. Non-Overlapped Multiple Bit Scanning

2. Overlapped Multiple Bit Scanning

3. Booth’s Algorithm

4. Canonical Multiplier Recoding

Page 95: 8 Computer Arithmetics

Non-Overlapped Multiple Non-Overlapped Multiple Bit Scanning Bit Scanning

Single Bit Scanning Multiple Bit Scanning

Page 96: 8 Computer Arithmetics

Overlapped Multiple Bit Overlapped Multiple Bit Scanning Scanning

1

Η διαδοχική ακολουθία από 1 σε μια δυαδική απεικόνιση ονομάζεται “string of 1s”

Υποθέτουμε ότι ξεκινάμε το μέτρημα από τα δεξιά οπότε το τέρμα δεξί 1 καλείται “beginning of string”

Για το τέρμα αριστερό 1 ένα 0 αριστερά του ορίζει το τέλος του string.

¨Ένα τέτοιο long string από 1 μπορεί να επανακωδικοποιηθεί τοποθετώντας στο begging of string το στο end of string το 1 και γεμίζοντας όλα τα ενδιάμεσα με 0

String Property of a conventional radix

Page 97: 8 Computer Arithmetics

Overlapped Multiple Bit Overlapped Multiple Bit Scanning (cont.) Scanning (cont.)

Με αυτόν τον τρόπο, όταν ελέγχονται τα στοιχεία του πολλαπλασιαστή κατά τη διάρκεια του πολλαπλασιασμού, μπορούμε να αντικαταστήσουμε τις συνεχόμενες προσθέσεις του πολλαπλασιαστέου με μία μόνο αφαίρεση στην αρχή του string και μια πρόσθεση στο τέλος του.

Recoding Triplets

Page 98: 8 Computer Arithmetics

Non-OverlappedNon-Overlapped VsVs.. Overlapped Overlapped Multiple Bit Scanning Multiple Bit Scanning

Two-Bit Scan vs. Overlapped Three-Bit Scan

To εικονικό 0 τοποθετήθηκε στο στα δεξιά του LSB του string ούτως ώστε αν το LSB είναι 1 να αναγνωριστούν οι περιπτώσεις “beginning of string” ή “isolated 1”

O έλεγχος μπορεί να γίνει από δεξιά προς τα αριστερά και αντίστροφα.

Κάθε τριπλέτα μπορεί να ελεχγθεί ταυτόχρονα παρουσιάζοντας έτσι το μοντέλο του παράλληλου ελέγχου που θα δούμε παρακάτω.

Page 99: 8 Computer Arithmetics

Booth’s Booth’s AlgorithmAlgorithm

Με βάση το string property που αναφέρθηκε προηγουμένως, μπορούμε να επανακωδικοποιήσουμε τον πολλαπλασιαστή B σε D, βρίσκοντας για 2 bit του B ένα bit του D όπως παρακάτω:

με

Επειδή όπως αναφέραμε η αρχή του string of 1s αναγνωρίζεται από ένα 0 στα δεξιά, τοποθετούμε ένα dummy 0 δεξιά από το LSB του string.

O έλεγχος μπορεί να πραγματοποιηθεί είτε από δεξιά προς τα αριστερά, είτε από τα αριστερά προς τα δεξιά είτε παράλληλα έχοντας πάντα το ίδιο αποτέλεσμα.

Page 100: 8 Computer Arithmetics

Booth’s AlgorithmBooth’s Algorithm ((cont.cont.))

Υποθέτοντας ότι: και

ο αλγόριθμος του Booth περιγράφεται ως εξής:

Όπως γίνεται κατανοητό ο συγκεκριμένος αλγόριθμος μπορεί να πολλαπλασιάσει δύο αριθμός συμπληρώματος του 2 χωρίς να τον ενδιαφέρουν τα πρόσημά τους, παρακάμπτοντας έτσι τις διαδικασίες pre και post-complement.

Page 101: 8 Computer Arithmetics

Booth’s Algorithm Booth’s Algorithm (example)(example)

Booth’s Algorithm Example

Radix-4

Page 102: 8 Computer Arithmetics

Canonical Multiplier Canonical Multiplier RecodingRecoding

Η συγκεκριμένη τεχνική χρησιμοποιεί την απεικόνιση signed-digit (SD).

Ένα minimal SD διάνυσμα είναι αυτό που περιέχει τον ελάχιστο αριθμό μη-μηδενικών ψηφίων.

Ένα canonical SD διάνυσμα είναι ένα minimal SD διάνυσμα D=dn-1…d1d0

που περιέχει μη γειτονικά μη-μηδενικά ψηφία δλδ di x di-1=0 για 1≤ i ≤ n-1.

Από εδώ και πέρα θα υποθέτουμε ότι το διάνυσμα D=dndn-1…d1d0 θα έχει n+1 bits και dn ≡ 0.

Ένας αριθμός στην canonical μορφή του έχει (n+1)/2 μη μηδενικά bit..

(n+1)-bit number to (n+1)-bit canonical SD number algorithm

Page 103: 8 Computer Arithmetics

Canonical Multiplier Canonical Multiplier Recoding (example)Recoding (example)

Scan Pattern

Page 104: 8 Computer Arithmetics

Canonical Multiplier Canonical Multiplier Recoding (example)Recoding (example)

Multiples Selection

Page 105: 8 Computer Arithmetics

Canonical Multiplier Canonical Multiplier Recoding (example)Recoding (example)

Adding the Bit-Pairs Parallelly Scanned with a CSA Tree

Page 106: 8 Computer Arithmetics

Parallel Parallel MultiplicationMultiplication

Στον παράλληλο πολλαπλασιασμό, χρησιμοποιείται μια συστοιχία πολλαπλασιαστών όπου πολλαπλά επίπεδα υλικού αντικαθιστούν τα κυκλώματα του ενός επιπέδου.

Κάθε πρόσθεση υλοποιείται από διαφορετικά επίπεδα υλικού και κάθε ολίσθηση από την κατάλληλη καλωδίωση μεταξύ των επιπέδων.

Οι διαδικασίες πολλαπλασιασμού επικαλύπτονται δηλαδή ο δεύτερος πολλαπλασιασμός ξεκινάει πριν ολοκληρωθεί ο πρώτος.

Page 107: 8 Computer Arithmetics

Wallace TreesWallace Trees

Στην πολλαπλασιαστική διαδικασία η πρόσθεση των μερικών γινομένων είναι η πιο χρονοβόρα δραστηριότητα.

Χρειαζόμαστε ένα υλικό το οποίο να χειρίζεται αυτές τις διαδοχικές προσθέσεις.

Ένα Wallace tree είναι ένας slice-bit αθροιστής ο οποίος προσθέτει όλα τα bit που βρίσκονται στη ίδια bit position.

Page 108: 8 Computer Arithmetics

Wallace Trees (cont.)Wallace Trees (cont.)

Page 109: 8 Computer Arithmetics

Unsigned Array Unsigned Array MultiplierMultiplier

Έστω και μη προσημασμένοι ακέραιοι και το γινόμενο τους.

Έχουμε:

Page 110: 8 Computer Arithmetics

Unsigned Array Unsigned Array MultiplierMultiplier ( (cont.cont.))

5 – 5 Multiplication Example

} summands

-------------->---------------------->

------------------------------>-------------------------------------->

-----------------------------------------------> Par

tial P

rodu

cts

Page 111: 8 Computer Arithmetics

Unsigned Array Unsigned Array MultiplierMultiplier ( (cont.cont.))

H τελευταία σειρά των FA μπορεί να αντικατασταθεί από έναν Carry Lookahead Adder ενός επιπέδου ώστε ο χρόνος καθυστέρησης να είναι ανάλογος του μεγέθους του πολλαπλασιαστέου.

Η αποδοτικότητα μπορεί να βελτιωθεί προσθέτοντας latch registers ανάμεσα στις σειρές των FA. Έτσι η πρόσθεση του μερικού γινομένου ενός προηγούμενου πολλαπλασιασμού επικαλύπτεται από την πρόσθεση του επόμενου.

Page 112: 8 Computer Arithmetics

Two’s Complement Two’s Complement Array MultiplierArray Multiplier

Ισχύει ότι:

Προκύπτει ότι για να βρούμε τον αντίθετο ενός αριθμού μπορούμε να αλλάξουμε το αi με 1-αi και το 0 με το 1 και αντίστροφα.

Page 113: 8 Computer Arithmetics

Two’s Complement Array Two’s Complement Array MultiplierMultiplier ( (cont.cont.))

Με το κατάλληλο συνδυασμό διαφόρων τύπων αθροιστών μπορούμε να κατασκευάσουμε συστοιχίες που υλοποιούν απευθείας πολλαπλασιασμούς συμπληρώματος.

Page 114: 8 Computer Arithmetics

Baugh-Wooley Two’s Baugh-Wooley Two’s Complement MultiplierComplement Multiplier

Έστω και , δύο αριθμοί συμπληρώματος του δύο και το γινόμενό τους.

Σύμφωνα με το προηγούμενο κεφάλαιο έχουμε:

Οπότε :κα

ι

Page 115: 8 Computer Arithmetics

Baugh-Wooley Two’s Baugh-Wooley Two’s Complement MultiplierComplement Multiplier((cont.cont.))

O τρίτος και ο τέταρτος όρος της προηγούμενης έκφρασης ήταν αρνητικός.

Αποδεικνύεται ότι:

ΔBW=[2(m+n) + 1]Δg

Page 116: 8 Computer Arithmetics

Baugh-Wooley Two’s Complement Baugh-Wooley Two’s Complement MultiplierMultiplier((example)example)

Page 117: 8 Computer Arithmetics

Modular StructureModular Structure

Είναι συστοιχίες πολλαπλασιαστών που εκτελούν γρήγορους πολλαπλασιασμούς μεταξύ μικρού ή μεσαίου μήκους όρων.

Page 118: 8 Computer Arithmetics

Modular Modular Structure(example)Structure(example)

Page 119: 8 Computer Arithmetics

Baugh-Wooley Two’s Baugh-Wooley Two’s Complement MultiplierComplement Multiplier((cont.cont.))

Page 120: 8 Computer Arithmetics

Additive Multiply Additive Multiply ModulesModules

Τα AMM μπορούν να δεχθούν “έξτρα” προσθετέους και τους προσθέτουν στο γινόμενο του πολλαπλασιαστέου και του πολλαπλασιαστή εισόδου.

Page 121: 8 Computer Arithmetics

Additive Multiply Additive Multiply Modules(Modules(exampleexample))

Page 122: 8 Computer Arithmetics

Additive Multiply Additive Multiply Modules(Modules(exampleexample))

Page 123: 8 Computer Arithmetics

Sequential DivisionSequential Division

Page 124: 8 Computer Arithmetics

Substract –And-Shift Substract –And-Shift ApproachApproach

Στους ψηφιακούς υπολογιστές οι περισσότερες διαδικασίες διαίρεσης, πραγματοποιούνται με μια αναδρομική διαδικασία που παρουσιάζεται στην εξίσωση:

Όπου,

•j=0,1,...,n-1, o δείκτης αναδρομής

•R(j) ,το μερικό υπόλοιπο στην j-η επανάληψηR(0) , ο διαιρετέος

R(n) , το τελικό υπόλοιπο

•q ,το πηλίκο

•D ,o διαιρέτης

•r ,η βάση αρίθμησης

Page 125: 8 Computer Arithmetics

Pencil-And-Paper Pencil-And-Paper DivisionDivision

Pencil-And-Paper Division Example

Page 126: 8 Computer Arithmetics

Long Division FormLong Division Form

O διαιρετέος R(0) και ο διαιρέτης D είναι σε κλασματική μορφή δλδ.

R(0)=r0.r1r2....

D=d0.d1d2.... και

Q=q0.q1q2....q(n)

R(0)<D , D≠0 και είναι θετικοί

Υπερχείλιση πηλίκου έχουμε όταν R(0)≥D

Page 127: 8 Computer Arithmetics

Restoring DivisionRestoring Division

Ισχύει ότι: 0≤R(0)<D

Κάθε φορά το D αφαιρείται από το μερικό υπόλοιπο μέχρις ότου η διαφορά γίνει αρνητική.

Tο D προστίθεται στην αρνητική διαφορά (restoring)

To πηλίκο προκύπτει από τον αριθμό τον αφαιρέσεων:q(j+1)=(number of subtractions -1).

Page 128: 8 Computer Arithmetics

Binary Restoring Binary Restoring DivisionDivision

Αν το πρόσημο του R(j+1) είναι θετικό, είναι q(j+1)=1.

Αν το πρόσημο του R(j+1) είναι θετικό, είναι q(j+1)=0.

Page 129: 8 Computer Arithmetics

Binary Restoring Binary Restoring DivisionDivision HardwareHardware

Page 130: 8 Computer Arithmetics

Binary Non-Restoring Binary Non-Restoring DivisionDivision

Βελτιωμένη μέθοδος χωρίς την “πρόσθεση αποκατάστασης”(restoring addition).

Ισχύει: με D>0.

H πράξη που πραγματοποιείται μπορεί να είναι είτε πρόσθεση είτε αφαίρεση ανάλογα με πρόσημο του μερικού υπολοίπου δλδ:

Παρομοίως το πηλίκο προκύπτει:

Όταν 2R(j)=0 η διαδικασία τερματίζεται.

Page 131: 8 Computer Arithmetics

High-Radix Non-High-Radix Non-Restoring DivisionRestoring Division

To πεδίο τιμών του πηλίκου είναι: {-(r-1),…,-1,1,…,(r-1)} , όπου r η βάση.

– D < Rj < D

Q=.q1q2...qn

π.χ

Για r=4 το πεδίο τιμών του qj+1 είναι {-3,-2,-1,1,2,3}

- 4D < 4R(j) < 4D

Page 132: 8 Computer Arithmetics

High – Radix Non -Restoring High – Radix Non -Restoring Division (cont.)Division (cont.)

Στην περίπτωση που θέλουμε να μετατρέψουμε ένα προσημασμένο αριθμό r βάσης στην αντίστοιχη μορφή συμπληρώματος του r , Q=q 0.q’1q’2....… με

χρησιμοποιούμε τον διπλανό αλγόριθμο.

Page 133: 8 Computer Arithmetics

SRT DivisionSRT DivisionSweeney, Robertson & Tocher------>SRT

και (D και R κανονικοποιημένες).

qj+1 є {-1, 0, 1}

Page 134: 8 Computer Arithmetics

SRT DivisionSRT Division ( (cont.cont.))

Αν χρησιμοποιήσουμε μόνο το τότε έχουμε:

και

Page 135: 8 Computer Arithmetics

Robertson’s High-Robertson’s High-Radix DivisionRadix Division

1. To μερικό υπόλοιπο R(j) ολισθαίνει στα αριστερά κατά μία θέση.

2. Επιλέγεται το κατάλληλο κλάσμα ώστε η μέγιστη απόλυτη τιμή του

μειωθεί κατά 1/r.

3. Δημιουργείται ένα ψηφίο του πηλίκου που αντιστοιχεί στο επιλεγμένο κλάσμα.

με

με

Page 136: 8 Computer Arithmetics

Robertson DiagramsRobertson Diagrams

Page 137: 8 Computer Arithmetics

Convergence Convergence DivisionDivision

To πηλίκο προκύπτει από επαναληπτικούς πολλαπλασιασμούς και όχι από ολισθήσεις και αφαιρέσεις.

Χρησιμοποιείται το ίδιο υλικό που υλοποιεί και τους πολλαπλασιασμούς.

Ο διαιρέτης και ο διαιρετέος χρησιμοποιούνται σαν αριθμητής και παρονομαστής κλάσματος.

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

Όταν ο παρονομαστής φτάσει στο 1 ο αριθμητής γίνεται το επιθυμητό πηλίκο.

Page 138: 8 Computer Arithmetics

Convergence DivisionConvergence Division MethodologiesMethodologies

Για ικανοποιητικά μεγάλα m:

Υποθέτουμε ότι οι N και D είναι θετικά κανονικοποιημένα κλάσματα οπότε:

Page 139: 8 Computer Arithmetics

Convergence DivisionConvergence Division MethodologiesMethodologies ( (cont.cont.))

Ο γενικός κανόνας επιλογής των πολλαπλασιαστών Ri είναι :

Οι παράγοντες Ri υπολογίζονται από τη σχέση Ri = 2 – Di-1

Page 140: 8 Computer Arithmetics

The end!

Ευχαριστούμε για την προσοχή και την ανάγνωση της παρουσίασης!