Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

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

Εργαστήριο Εισαγωγής στη Σχεδίαση Συστημάτων VLSI

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

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

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

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο Σύντομη Επανάληψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Αθροιστές. Ημιαθροιστής

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

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

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

Ελίνα Μακρή

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

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

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 3 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

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

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

a -j a 5 a 4 a 3 a 2 a 1 a 0, a -1 a -2 a -3

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

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

Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής. Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 2 ο Σύντοµη Επανάληψη

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε.

6.1 Καταχωρητές. Ένας καταχωρητής είναι μια ομάδα από f/f αλλά μπορεί να περιέχει και πύλες. Καταχωρητής των n ψηφίων αποτελείται από n f/f.

ξργ Μονάδα επεξεργασίας ξργ δδ δεδομένων Μονάδα ελέγχου

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

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

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

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

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

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

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

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

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 11 ο και 12 ο

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

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

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

K24 Ψηφιακά Ηλεκτρονικά 4: Σχεδίαση Συνδυαστικών Κυκλωμάτων

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

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

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

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

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

Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα

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

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή

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

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

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

Ενότητα 9 ΑΡΙΘΜΗΤΙΚΑ & ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ

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

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

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΠΛΗ-21

Αριθμητική Ανάλυση & Εφαρμογές

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

Κεφάλαιο 8. Αριθμητική Λογική μονάδα

1 η Θεµατική Ενότητα : Αριθµητικά Κυκλώµατα. Επιµέλεια διαφανειών: Χρ. Καβουσιανός

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 2 ο. ΑΛΓΕΒΡΑ Boole ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Συνδυαστική Λογική. Επιμέλεια Διαφανειών: Δ.

K24 Ψηφιακά Ηλεκτρονικά 6: Πολυπλέκτες/Αποπολυπλέκτες

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

Συνδυαστικά Κυκλώματα

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

ΘΕΜΑΤΑ & ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Περιεχόμενα. Πρώτο Κεφάλαιο. Εισαγωγή στα Ψηφιακά Συστήματα. Δεύτερο Κεφάλαιο. Αριθμητικά Συστήματα Κώδικες

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

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

9. OIΚΟΥΜΕΝΙΚΕΣ ΠΥΛΕΣ ΠΟΛΛΑΠΛΩΝ ΕΙΣΟ ΩΝ

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

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

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

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

100 ΕΡΩΤΗΣΕΙΣ ΜΕ ΤΙΣ ΑΝΤΙΣΤΟΙΧΕΣ ΑΠΑΝΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ

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

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

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Συνδυαστικά Λογικά Κυκλώματα

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

Ολοκληρωμένα Κυκλώματα

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Αριθμητικά Συστήματα. Επιμέλεια Διαφανειών: Δ.

ΠΛΗ21 Κεφάλαιο 2. ΠΛΗ21 Ψηφιακά Συστήματα: Τόμος Α Κεφάλαιο: Παράσταση Προσημασμένων Αριθμών Συμπληρώματα

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

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

ΠΛΗ10 Κεφάλαιο 2. ΠΛH10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: : Αριθμητική περιοχή της ALU 2.5: Κυκλώματα Υπολογιστών

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

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017

Ψηφιακά Κυκλώματα (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ

i Το τρανζίστορ αυτό είναι τύπου NMOS. Υπάρχει και το συμπληρωματικό PMOS. ; Τι συμβαίνει στο τρανζίστορ PMOS; Το τρανζίστορ MOS(FET)

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

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

ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 3

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

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΡΑΓΚΙΑΟΥΡΗΣ ΝΙΚΟΛΑΟΣ

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

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

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Κατακερματισμός (Hashing)

Ψηφιακά Συστήματα. 6. Σχεδίαση Συνδυαστικών Κυκλωμάτων

Transcript:

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Υ Ενότητα 3η: Αριθμητικές Πράξεις και Μονοπάτι Επεξεργασίας Δεδομένων Άσκηση 1: Δείξτε πώς μπορούμε να υλοποιήσουμε ένα δυαδικό αθροιστή 16 ψηφίων, χρησιμοποιώντας ως δομικές μονάδες αθροιστές πρόβλεψης κρατουμένου των 4 ψηφίων, με τους πιο κάτω τρόπους: (α) Οι επιμέρους αθροιστές είναι συνδεμένοι σε διάταξη διάδοσης κρατουμένου. (β) Οι επιμέρους αθροιστές είναι συνδεμένοι ιεραρχικά με μια διάταξη πρόβλεψης κρατουμένου που χρησιμοποιεί ενδιάμεσα αποτελέσματα αυτών. Να επαληθεύσετε τις παραπάνω αρχιτεκτονικές με παράδειγμα πρόσθεσης δύο δυαδικών αριθμών των 16 ψηφίων. Για καθεμιά αρχιτεκτονική υπολογίστε το χρόνο καθυστέρησης για την παραγωγή του αποτελέσματος εκφρασμένο ως το μέγιστο αριθμό πυλών που διανύει κάποιο σήμα σε αυτήν. Σχολιάστε πιθανή επέκταση κάθε αρχιτεκτονικής στα 64 ψηφία. Απάντηση: Οι αθροιστές πρόβλεψης κρατουμένου (carry-lookahead adders) υλοποιούν το συνδυαστικό κύκλωμα ενός αθροιστή πολλών ψηφίων που δε διαδίδει το κρατούμενο του κάθε ψηφίου προς το αμέσως πιο σημαντικό ψηφίο, αλλά υπολογίζει όλα μαζί τα κρατούμενα σα λογικές συναρτήσεις των σημάτων εισόδου του αθροιστή. Οι αθροιστές πρόβλεψης κρατουμένου στηρίζουν την τεχνική τους στη χρήση δύο ενδιάμεσων λογικών συναρτήσεων, από τις οποίες η μία αληθεύει στις περιπτώσεις που ένα κρατούμενο παράγεται κατά την πρόσθεση δύο ψηφίων (συνάρτηση g i generate), και η άλλη αληθεύει στις περιπτώσεις που ένα κρατούμενο διαδίδεται από την πρόσθεση προηγούμενων ψηφίων (συνάρτηση p i propagate): p i = a i b i g i = a i b i όπου a i και b i τα ψηφία των αριθμών που προστίθενται. Ο μηχανισμός υπολογισμού ενός κρατουμένου μπορεί να προκύψει από τη λογική σχέση που συνδέει τις δύο πιο πάνω συναρτήσεις: c i+1 = g i + p i c i (1) δηλαδή ένα νέο κρατούμενο είτε παράγεται στη θέση i, είτε διαδίδει το κρατούμενο της προηγούμενης θέσης 1. Η ανάπτυξη των εκφράσεων για όλα τα ψηφία που συμμετέχουν στην πρόσθεση μας δίνει ταυτόχρονα το κρατούμενο για κάθε ψηφίο: c 1 = g 0 + p 0 c 0 c 2 = g 1 + p 1 c 1 = g 1 + p 1 g 0 + p 1 p 0 c 0 c 3 = g 2 + p 2 c 2 = g 2 + p 2 g 1 + p 2 p 1 c 1 = g 2 + p 2 g 1 + p 2 p 1 g 0 + p 2 p 1 p 0 c 0 c 4 = g 3 + p 3 c 3 = = g 3 + p 3 g 2 + p 3 p 2 g 1 + p 3 p 2 p 1 g 0 + p 3 p 2 p 1 p 0 c 0 κοκ 1 Στην πραγματικότητα κρατούμενο διαδίδεται και όταν και τα δύο ψηφία a i και b i έχουν τιμή 1, οπότε η συνάρτηση p i θα μπορούσε να γραφτεί ως a i + b i. Όμως, για τον υπολογισμό του κρατουμένου c i+1, όπου χρησιμοποιούμε τη συνάρτηση p i, η περίπτωση αυτή καλύπτεται από τη συνάρτηση g i. Επιπλέον, χρησιμοποιώντας το αποκλειστικό Ή για τη συνάρτηση p i, μπορούμε να υπολογίζουμε το άθροισμα s i από τη λογική έκφραση p i c i αντί της γνωστής a i b i c i, μειώνοντας έτσι το κόστος του υλικού.

2 συναρτήσει μόνο των p i, g i και c 0. Το άθροισμα παράγεται με μια ακόμα λογική πράξη μετά την παραγωγή των κρατουμένων: s i = p i c i (2) Συνολικά τα κρατούμενα παράγονται μετά από 3 λογικές πράξεις, δηλαδή με καθυστέρηση 3 πυλών 2, και το άθροισμα μετά από 4 πράξεις, δηλαδή με καθυστέρηση 4 πυλών. Μια συνολική σχεδίαση ενός κυκλώματος που βασίζεται στις πιο πάνω σχέσεις έχει απαγορευτικό κόστος πολυπλοκότητας, ακόμα και για μικρό αριθμό ψηφίων. Ο πιο σημαντικός περιοριστικός παράγοντας είναι ο μέγιστος αριθμός εισόδων μιας πύλης (fan-in), που για τα μεγέθη των πυλών ενός VLSI κυκλώματος δεν είναι συνήθως μεγαλύτερος του 4 ή 5, ώστε να μην καταλαμβάνει μεγάλη επιφάνεια και να μην αυξάνει το χρόνο καθυστέρησης διάδοσης των σημάτων μέσα από την πύλη, αλλά ούτε και την καταναλισκόμενη ισχύ. Έτσι οι σχεδιαστές αθροιστών μεγάλου μήκους χρησιμοποιούν σα δομικές μονάδες γρήγορους αθροιστές των 4 bits που τους συνδέουν μεταξύ τους με διάφορες τεχνικές. Στην πρώτη από τις δύο τεχνικές που μελετάμε συνδέουμε 4 αθροιστές πρόβλεψης κρατουμένου των 4 bits (ΑΠΚ-4) σε διάταξη διάδοσης κρατουμένου, όπως φαίνεται στο σχήμα που ακολουθεί. Στη διάταξη αυτή το κρατούμενο εξόδου του κάθε αθροιστή πλην του τελευταίου τροφοδοτεί το κρατούμενο εισόδου του επόμενου. a 15 a 14 a 13 a 12 a 11 a 10 a 9 a 8 a 7 a 6 a 5 a 4 a 3 a 2 a 1 a 0 b 15 b 14 b 13 b 12 b 11 b 10 b 9 b 8 b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 c 0 ΑΠΚ-4 c 12 c 8 c 4 ΑΠΚ-4 ΑΠΚ-4 ΑΠΚ-4 c 16 s 15 s 14 s 13 s 12 s 11 s 10 s 9 s 8 s 7 s 6 s 5 s 4 s 3 s 2 s 1 s 0 Στη δεύτερη τεχνική από την άλλη μεριά χρησιμοποιούμε ένα πρόσθετο κύκλωμα πρόβλεψης κρατουμένου που χρησιμοποιεί τις συναρτήσεις p i και g i του πρώτου επιπέδου, για να προβλέψει τις τιμές των επιμέρους κρατουμένων εισόδου των αθροιστών των 4 bits. Κατασκευάζουμε έτσι μια διάταξη όπως την παρακάτω: a 15 a 14 a 13 a 12 a 11 a 10 a 9 a 8 a 7 a 6 a 5 a 4 a 3 a 2 a 1 a 0 b 15 b 14 b 13 b 12 b 11 b 10 b 9 b 8 b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 c 0 p 15 p 14 p 13 p 12 p 11 p 10 p 9 p 8 p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 g 15 g 14 g 13 g 12 g 11 g 10 g 9 g 8 g 7 g 6 g 5 g 4 g 3 g 2 g 1 g 0 Πρόβλεψη Σούπερ-Κρατουμένου c 0 c 16 ΑΠΚ-4 c 12 ΑΠΚ-4 c 8 ΑΠΚ-4 c 4 ΑΠΚ-4 c 0 c 16 s 15 s 14 s 13 s 12 s 11 s 10 s 9 s 8 s 7 s 6 s 5 s 4 s 3 s 2 s 1 s 0 Το κύκλωμα Πρόβλεψης Σούπερ-Κρατουμένου (ΠΣΚ ονομάζεται έτσι επειδή λειτουργεί σα δεύτερο επίπεδο πρόβλεψης πάνω στο πρώτο) χρησιμοποιεί αυτές τις συναρτήσεις για να προβλέψει τα επιμέρους κρατούμενα c 12, c 8, και c 4, καθώς και το κρατούμενο εξόδου c 16. (Παρατηρήστε ότι τα ίδια κρατούμενα παράγονται και από τους ΑΠΚ-4, αλλά με καθυστέ- 2 Κάνοντας την απλούστευση ότι οι λογικές πράξεις AND, OR και XOR αντιστοιχούν σε πύλες ίσης καθυστέρησης.

3 ρηση, γι αυτό και με το νέο επίπεδο λέμε ότι προβλέπουμε τα κρατούμενα και όχι απλά ότι τα υπολογίζουμε!) Ορίζοντας τις βοηθητικές συναρτήσεις: P 0 = p 3 p 2 p 1 p 0 G 0 = g 3 + p 3 g 2 + p 3 p 2 g 1 + p 3 p 2 p 1 g 0 P 4 = p 7 p 6 p 5 p 4 G 4 = g 7 + p 7 g 6 + p 7 p 6 g 5 + p 7 p 6 p 5 g 4 P 8 = p 11 p 10 p 9 p 8 G 8 = g 11 + p 11 g 10 + p 11 p 10 g 9 + p 11 p 10 p 9 g 8 P 12 = p 15 p 14 p 13 p 12 G 12 = g 15 + p 15 g 14 + p 15 p 14 g 13 + p 15 p 14 p 13 g 12 η σχέση (1) για το δεύτερο επίπεδο του κυκλώματος πρόβλεψης γίνεται: c i+4 = G i + P i c i (3) και αναπτύσσοντάς την σε βάθος μέχρι 4 bits παίρνουμε τα σούπερ-κρατούμενα: c 4 = G 0 + P 0 c 0 c 8 = G 4 + P 4 G 0 + P 4 P 0 c 0 c 12 = G 8 + P 8 G 4 + P 8 P 4 G 0 +P 8 P 4 P 0 c 0 c 16 = G 12 + P 12 G 8 + P 12 P 8 G 4 + P 12 P 8 P 4 G 0 + P 12 P 8 P 4 P 0 c 0 Επιστρέφοντας στο πρώτο επίπεδο, βρίσκουμε τα υπόλοιπα επιμέρους κρατούμενα σε κάθε αθροιστή των 4 bits με βάση τα αναπτύγματα της σχέσης (1) σε βάθος μέχρι 3 bits, και ολοκληρώνουμε με την εφαρμογή της σχέσης (2) για κάθε bit, για να υπολογίσουμε το τελικό άθροισμα. Ας θεωρήσουμε τους δυαδικούς αριθμούς 0101100011101101 και 1100001110001011 σε μη προσημασμένη αναπαράσταση. Η πρόσθεσή τους με την πρώτη τεχνική δίνει στους τέσσερις ΑΠΚ-4 τις ακόλουθες ενδιάμεσες τιμές: p = 1001 1011 0110 0110 g = 0100 0000 1000 1001 με τα επιμέρους κρατούμενα και το κρατούμενο εξόδου να υπολογίζονται διαδοχικά σε κάθε ΑΠΚ-4 σα συνάρτηση των αντίστοιχων τετράδων των p και g, και των αντίστοιχων κρατουμένων εισόδου. Τα κρατούμενα εισόδου μετά τον πρώτο ΑΠΚ-4 λαμβάνονται από τον προηγούμενο. Για τον πρώτο ΑΠΚ-4 τα κρατούμενα θα προκύψουν από τα αναπτύγματα της σχέσης (1) σε βάθος μέχρι 4 bits: c 1 = c 2 = c 3 = c 4 = 1 Τα αντίστοιχα ψηφία του αθροίσματος θα προκύψουν από τη σχέση (2) για κάθε bit: s 3-0 = 1000 Οι υπόλοιποι τρεις ΑΠΚ-4 παράγουν έξοδο με πανομοιότυπο τρόπο όπως ο πρώτος, με κρατούμενα εισόδου τα c 4, c 8 και c 12, αντίστοιχα. Έτσι, για το δεύτερο: c 5 = c 6 = c 7 = 0 c 8 = 1 s 7-4 = 0111 Για τον τρίτο: c 11 = c 12 = 0 c 9 = c 10 = 1 s 11-8 = 1100 Για τον τέταρτο τέλος: c 13 = c 14 = 0 c 15 = c 16 = 1 s 15-12 = 0001 Και το συνολικό άθροισμα θα είναι: s = 0001110001111000 Μπορούμε εύκολα να δούμε ότι η συνολική καθυστέρηση στον υπολογισμό ενός αθροίσματος με αυτή την τεχνική είναι 1 πύλης για τον υπολογισμό των p i και g i στον πρώτο ΑΠΚ-4, 4 φορές 2 πυλών για τον υπολογισμό των κρατουμένων εξόδου κάθε ΑΠΚ-4, και 1 ακόμα πύλης για τον υπολογισμό του αθροίσματος στον τελευταίο ΑΠΚ-4, δηλαδή 10 μονάδες πυλών.

4 Με τη δεύτερη τεχνική παίρνουμε κατ αρχήν τις ίδιες ενδιάμεσες τιμές για τα p και g, καθώς και: P 0 = P 4 = P 8 = P 12 = G 8 = 0 G 0 = G 4 = G 12 = 1 Από τα αναπτύγματα της σχέσης (3) βρίσκουμε τα σούπερ-κρατούμενα, δηλαδή τα κρατούμενα εισόδου των τριών ΑΠΚ-4 μετά τον πρώτο, καθώς και το κρατούμενο εξόδου: c 12 = 0 c 4 = c 8 = c 16 = 1 Επιστρέφοντας στο πρώτο επίπεδο, υπολογίζουμε τα υπόλοιπα επιμέρους κρατούμενα και τα ψηφία του αθροίσματος με τον ίδιο ακριβώς τρόπο όπως και στην πρώτη τεχνική, με τη διαφορά ότι χρησιμοποιούμε τα αναπτύγματα της σχέσης (1) σε βάθος μέχρι 3 bits, αφού τα κρατούμενα c 4, c 8, c 12 και c 16 είναι ήδη γνωστά και δεν λαμβάνονται από τον προηγούμενο ΑΠΚ-4. Στην τεχνική αυτή η καθυστέρηση υπολογίζεται αναλύοντας τις επιμέρους καθυστερήσεις στους αθροιστές των 4 bits. Έτσι θέλουμε καθυστέρηση 1 πύλης για τον υπολογισμό των p i και g i του πρώτου επιπέδου, και καθυστέρηση 2 πυλών για τον υπολογισμό των P i και G i. Στη συνέχεια χρειαζόμαστε καθυστέρηση άλλων 2 πυλών για τον υπολογισμό των σούπερ-κρατουμένων. Επιστρέφοντας στο πρώτο επίπεδο, θέλουμε άλλες 2 πύλες για τα υπόλοιπα επιμέρους κρατούμενα, και 1 τελευταία πύλη για το τελικό άθροισμα, δηλαδή ένα σύνολο 8 πυλών. Εάν θέλουμε να επεκτείνουμε τις πιο πάνω τεχνικές στα 64 bits, θα δούμε ότι η πρώτη είναι η πλέον ακατάλληλη, καθώς η διάδοση κρατουμένου θα μας υποχρεώσει να περιμένουμε 1+16 2+1=34 μονάδες πυλών μέχρι να πάρουμε ένα αποτέλεσμα των 64 bits. Η δεύτερη τεχνική έχει το πλεονέκτημα ότι λόγω της ιεραρχικής υλοποίησης, μπορεί να επεκταθεί πιο εύκολα σε μεγαλύτερα μήκη αριθμών. Μ άλλα λόγια, επέκταση σε 64 bits μπορεί να γίνει συνδυάζοντας μικρότερες διατάξεις με την προσθήκη ενός ακόμα επιπέδου αθροιστών. Έτσι, ένα νέο κύκλωμα ΠΣΚ θα προβλέπει τα επιμέρους κρατούμενα c 48, c 32, και c 16, καθώς και το κρατούμενο εξόδου c 64, με τις βοηθητικές συναρτήσεις: P 0 ' = P 12 P 8 P 4 P 0 G 0 ' = G 12 + P 12 G 8 + P 12 P 8 G 4 + P 12 P 8 P 4 G 0 P 16 ' = P 28 P 24 P 20 P 16 G 16 ' = G 28 +P 28 G 24 + P 28 P 24 G 20 + P 28 P 24 P 20 G 16 P 32 ' = P 44 P 40 P 36 P 32 G 32 ' = G 44 + P 44 G 40 + P 44 P 40 G 36 + P 44 P 40 P 36 G 32 P 48 ' = P 60 P 56 P 52 P 48 G 48 ' = G 60 + P 60 G 56 + P 60 P 56 G 52 + P 60 P 56 P 52 G 48 οπότε η σχέση (3) για το τρίτο επίπεδο του κυκλώματος πρόβλεψης γίνεται: c i+16 = G i ' + P i 'c i από την οποία θα λαμβάνουμε τα ζητούμενα σούπερ-κρατούμενα. Η τελική διάταξη που παίρνουμε έχει τη μορφή τετραδικού δέντρου, μια που κάθε υπομονάδα ΠΣΚ συνδυάζει 4 ψηφία P i με 4 ψηφία G i και παράγει τα ενδιάμεσα σούπερ-κρατούμενα, επιστρέφοντάς τα στο πιο κάτω επίπεδο. Έτσι, το ανώτερο επίπεδο ΠΣΚ συνδυάζει 4 αθροιστές των 16 bits και δίνει τα κρατούμενα εισόδου των αντίστοιχων υπομονάδων του αμέσως κατώτερου επιπέδου ΠΣΚ. Αυτές με τη σειρά τους θα δώσουν τα κρατούμενα εισόδου των κατώτερων αθροιστών των 4 bits, οι οποίοι θα παράγουν το τελικό άθροισμα. Το κρατούμενο εξόδου παράγεται από το ανώτερο επίπεδο πρόβλεψης. Άσκηση 2: Μελετήστε τις δύο βελτιώσεις του αθροιστή διάδοσης κρατουμένου, (α) του αθροιστή επιλογής κρατουμένου (carry-select) και (β) του αθροιστή παράκαμψης κρατουμένου (carry-skip). Για καθέναν από τους δύο αυτούς αθροιστές δώστε ένα κυκλωματικό διάγραμμα, το οποίο με δομικές μονάδες αθροιστές διάδοσης κρατουμένου, να αναδεικνύει την τροποποίηση που γίνεται στη διάδοση κρατουμένου, ώστε να επιτυγχάνεται η επιθυμητή βελτίωση στην απόδοση του αθροιστή. Αναλύστε ποσοτικά τη βελτίωση αυτή, υπολογίζοντας το χρόνο σε αριθμό στοιχειωδών

5 πυλών που απαιτείται για την πρόσθεση δύο αριθμών Ν ψηφίων, και συγκρίνοντας με τον αντίστοιχο χρόνο ενός κλασικού αθροιστή διάδοσης κρατουμένου. Απάντηση: Θα μελετήσουμε και θα αξιολογήσουμε τους δύο αθροιστές επιλογής και παράκαμψης κρατουμένου για αριθμούς εύρους 24 ψηφίων, και αργότερα θα επεκτείνουμε την αξιολόγησή τους για οποιοδήποτε εύρος αριθμών. Έστω Α και Β οι προσθετέοι και S το άθροισμα που λαμβάνουμε από τους αθροιστές. Το παρακάτω διάγραμμα δείχνει τη δομή ενός αθροιστή επιλογής κρατουμένου, με δομικές μονάδες αθροιστές διάδοσης κρατουμένου των 8 ψηφίων: A 23-16 B 23-16 A 15-8 B 15-8 Διάδοση 8-bit 0 Διάδοση 8-bit 0 A 7-0 B 7-0 A 23-16 B 23-16 A 15-8 B 15-8 Διάδοση 8-bit Διάδοση 8-bit 1 Διάδοση 8-bit 1 S 23-16 Η λειτουργία του αθροιστή επιλογής κρατουμένου στηρίζεται στον διπλό υπολογισμό τμημάτων του αθροίσματος, τόσο με κρατούμενο εισόδου 0 όσο και με κρατούμενο εισόδου 1, και στη μετέπειτα επιλογή του αποτελέσματος κάθε τμήματος με βάση το πραγματικό κρατούμενο του προηγούμενου τμήματος. Διπλός υπολογισμός σημαίνει διπλό υλικό πρόσθεσης, που το κάθε ένα λειτουργεί με διαφορετικό κρατούμενο εισόδου, όπως ακριβώς φαίνεται στο διάγραμμα, όπου η πράξη υλοποιείται με τρία τμήματα των 8 bits. Πολυπλέκτες χρησιμοποιούνται για την επιλογή του αθροίσματος και του κρατουμένου εξόδου του τμήματος. Μόνο το λιγότερο σημαντικό τμήμα του αθροίσματος υπολογίζεται με το πραγματικό κρατούμενο εισόδου, αφού το κρατούμενο αυτό είναι εξ αρχής γνωστό κι έτσι δεν έχει εδώ νόημα διπλός υπολογισμός και επιλογή αποτελέσματος. Το παρακάτω διάγραμμα δείχνει τη δομή ενός αθροιστή παράκαμψης κρατουμένου, με δομικές μονάδες αθροιστές διάδοσης κρατουμένου των 8 ψηφίων: A 15-8 B 15-8 S 15-8 S 7-0 A 23-16 B 23-16 Διάδοση 8-bit p 15-8 Διάδοση 8-bit A 7-0 B 7-0 Διάδοση 8-bit S 23-16 S 15-8 S 7-0 όπου p είναι τα ψηφία διάδοσης κρατουμένου που προκύπτουν μέσα σε κάθε κύκλωμα α- θροιστή με βάση τη λογική σχέση p i = a i b i. Εδώ έχουμε μόνο έναν υπολογισμό ανά τμήμα των 8 bits, και μπορούμε να δούμε εύκολα ότι ο υπολογισμός του κρατουμένου εξόδου του τμήματος παρακάμπτεται, όταν τα ψηφία διάδοσης έχουν όλα τιμή 1. Πράγματι, αν ξέρουμε από νωρίς ότι το κρατούμενο εξόδου δε θα δημιουργηθεί μέσα στο τμήμα, αλλά ότι θα προ-

6 κύψει μόνο από τη διάδοση του κρατουμένου εισόδου στην έξοδο του τμήματος, τότε δε χρειάζεται να περιμένουμε την παραγωγή του μέσα από το κύκλωμα του τμήματος, αλλά με τη βοήθεια του πολυπλέκτη στέλνουμε την τιμή του κρατουμένου εισόδου απ ευθείας στην έξοδο κρατουμένου του τμήματος. Η παράκαμψη κρατουμένου έχει νόημα όταν προηγείται, αλλά και όταν ακολουθεί επόμενο τμήμα υπολογισμού, γι αυτό και δεν έχουμε κύκλωμα παράκαμψης στο λιγότερο και στο πιο σημαντικό τμήμα του αθροίσματος. Ας μελετήσουμε στη συνέχεια το χρόνο που απαιτεί κάθε διάταξη για τον υπολογισμό ενός αθροίσματος 24 bits. Θα θεωρήσουμε ότι ένα κύκλωμα πλήρους αθροιστή 1 bit απαιτεί δύο επίπεδα πυλών για τον υπολογισμό του αθροίσματος και του κρατουμένου. Έτσι για τη δομική μονάδα αθροιστή διάδοσης κρατουμένου των 8 bits ο χρόνος υπολογισμού τόσο του α- θροίσματος όσο και του κρατουμένου εξόδου θα είναι 8 2=16Τ, όπου Τ είναι ο χρόνος διάδοσης σήματος μέσα από μία στοιχειώδη λογική πύλη. Ένας αθροιστής διάδοσης κρατουμένου των 24 bits θα αποτελείται από τρεις μονάδες διάδοσης των 8 bits, συνδεμένους σε σειρά, οπότε ο χρόνος υπολογισμού του αθροίσματος θα είναι: Τ διαδ = 3 16Τ = 48Τ Στον πιο πάνω αθροιστή επιλογής κρατουμένου όλοι οι αθροιστές των 8 bits λειτουργούν παράλληλα, από τη στιγμή που έχουν γνωστό κρατούμενο εισόδου το κρατούμενο εισόδου του συνολικού αθροιστή και τις σταθερές 0 και 1. Έτσι, όλοι οι υπολογισμοί στους αθροιστές των 8 bits θα απαιτήσουν μόνο 16Τ για να ολοκληρωθούν. Μετά τον υπολογισμό κάθε τμήματος θα απαιτηθεί επιπλέον χρόνος δύο λογικών πυλών για κάθε πολυπλέκτη, κι έτσι ο συνολικός χρόνος του αθροιστή επιλογής κρατουμένου θα είναι: Τ επιλ = 16Τ + 2 2Τ = 20Τ Στον αθροιστή παράκαμψης κρατουμένου, η αξιολόγηση της απόδοσης είναι λιγότερο απλή. Αυτό οφείλεται στο ότι η παράκαμψη του κρατουμένου γίνεται υπό συνθήκη, κι επομένως πρέπει να μελετήσουμε τι συμβαίνει σε κάθε τμήμα υπολογισμού, τόσο όταν η συνθήκη ικανοποιείται, όσο και όταν η συνθήκη δεν ικανοποιείται. Η συνθήκη όπως την περιγράψαμε παραπάνω είναι η μη μηδενική τιμή των ψηφίων διάδοσης p i του τμήματος. Τα ψηφία p i υπολογίζονται όλα ταυτόχρονα με την έναρξη της πρόσθεσης, και ο υπολογισμός τους, όπως και ο επακόλουθος υπολογισμός του λογικού γινομένου τους, ολοκληρώνεται πριν την ολοκλήρωση της πρόσθεσης του λιγότερο σημαντικού αθροιστή. Έτσι, στην περίπτωση αληθούς συνθήκης, η τιμή του κρατουμένου εξόδου είναι έγκυρη με καθυστέρηση ίση με το χρόνο διάδοσης μέσα από τον πολυπλέκτη. Στην περίπτωση ψευδούς συνθήκης, το κρατούμενο εισόδου θα διαδοθεί μέχρι κάποιο σημείο στη μονάδα πρόσθεσης του τμήματος όσο τα ψηφία διάδοσης έχουν τιμή 1, αλλά από εκεί και πέρα το κρατούμενο εξόδου θα είναι ανεξάρτητο του κρατουμένου εισόδου, οπότε θα είναι έγκυρο σε χρόνο το πολύ ίσο με το χρόνο υπολογισμού του πρώτου τμήματος της πρόσθεσης, δηλαδή σε χρόνο 16Τ από την έναρξη της πράξης, και θα διαδοθεί στην έξοδο του τμήματος με καθυστέρηση ίση με το χρόνο διάδοσης μέσα από τον πολυπλέκτη. Επομένως, ο συνολικός χρόνος του αθροιστή παράκαμψης κρατουμένου θα είναι: Τ παρακ = 16Τ + 2Τ +16Τ = 34Τ Γενικεύοντας τους αθροιστές για εύρος Ν = 8ν bits οι χρόνοι διαμορφώνονται ως εξής: Τ διαδ = ν 16Τ = 16νΤ Τ επιλ = 16Τ + (ν-1) 2Τ = (14 + 2ν)Τ Τ παρακ = 16Τ + (ν-2) 2Τ +16Τ = (28 + 2ν)Τ Κατ αρχήν είναι φανερό ότι οι δυο αθροιστές επιλογής και παράκαμψης κρατουμένου έχουν καλύτερη απόδοση από τον κλασικό αθροιστή διάδοσης κρατουμένου. Παρατηρήστε ότι ο αθροιστής επιλογής κρατουμένου επιτυγχάνει καλύτερο χρόνο υπολογισμού από τον αθροιστή παράκαμψης κρατουμένου, όμως με σημαντικά υψηλότερο κόστος υλικού. Τελειώνοντας, αξίζει να πούμε ότι αν τα τμήματα στα οποία χωρίζονται οι αριθμοί στον α- θροιστή παράκαμψης κρατουμένου δεν είναι ίσα, αλλά τα ακραία τμήματά του είναι αρκετά μικρότερα, με σταδιακή αύξηση εύρους προς τα μεσαία τμήματα, τότε ο χρόνος υπολογισμού

7 του αθροιστή βελτιώνεται σημαντικά, και μάλιστα γίνεται ανάλογος του, με Ν το εύρος του υπολογισμού. Από την άλλη μεριά, ο αθροιστής επιλογής κρατουμένου μπορεί να υλοποιηθεί με ιεραρχική προς τα κάτω επιλογή αντί της γραμμικής που δείξαμε, οπότε ο χρόνος υπολογισμού του γίνεται ανάλογος του. Άσκηση 3: Θεωρήστε τους δυαδικούς αριθμούς Α = 010111 και Β = 110110 σε αναπαράσταση συμπληρώματος του 2 των 6 bits, οι οποίοι πολλαπλασιάζονται σε μια μονάδα διαδοχικών προσθέσεων και ολισθήσεων των 12 bits. Α. Περιγράψτε την πράξη με και χωρίς τον αλγόριθμο του Booth, θεωρώντας τον Β σαν πολλαπλασιαστή. Σχολιάστε αν ο αλγόριθμος του Booth μειώνει τις επί μέρους πράξεις. Να επαληθεύσετε το αποτέλεσμα συγκρίνοντας με την τιμή του δεκαδικού γινομένου. Β. Υλοποιήστε με τη βοήθεια λογικών κυκλωμάτων τον αλγόριθμο του Booth στη μονάδα ελέγχου της πράξης, εξετάζοντας τα κατάλληλα ψηφία του πολλαπλασιαστή, ελέγχοντας έτσι την πράξη (πρόσθεση ή αφαίρεση) σε κάθε στάδιο μερικών γινομένων. Γ. Σχολιάστε αν ο αλγόριθμος Booth βελτιώνει τον πολλαπλασιασμό, όταν αυτός υλοποιείται συνδυαστικά με αθροιστές διάδοσης κρατουμένου. Απάντηση: Α. Εφόσον οι δύο αριθμοί βρίσκονται στην παράσταση συμπληρώματος του 2, πρέπει να σκεφτούμε ότι η μη χρησιμοποίηση του αλγόριθμου του Booth επιβάλλει την προέκταση των αρνητικών αριθμών μέχρι το μέγεθος του ζητούμενου γινομένου. Η προέκταση ενός αρνητικού αριθμού στην παράσταση συμπληρώματος του 2 γίνεται με προσθήκη του ψηφίου 1 από τα αριστερά του αριθμού όσες φορές απαιτείται για να φτάσουμε το επιθυμητό μέγεθος. Εάν δεν προεκτείνουμε έναν αρνητικό αριθμό σε μια τέτοια περίπτωση, η πράξη χωρίς τον αλγόριθμο Booth θα είναι πιθανά λανθασμένη. Ειδικότερα, η μη προσθήκη των ψηφίων 1 στον πολλαπλασιαστέο θα αλλοιώσει τα μερικά αθροίσματα στην εκτέλεση του πολλαπλασιασμού, εάν παρουσιαστεί κάποια υπερχείλιση, ενώ η μη προσθήκη των ψηφίων 1 στον πολλαπλασιαστή οδηγεί σε απώλεια τόσων προσθέσεων, όσα είναι τα ψηφία της προέκτασης. Εξαιτίας της ανάγκης προέκτασης των αριθμών, δε μπορούμε να χρησιμοποιήσουμε την ΑΛΜ μεγέθους ίσου με το μέγεθος των παραγόντων, αλλά πρέπει να χρησιμοποιήσουμε μια μονάδα μεγέθους ίσου με το μέγεθος του γινομένου. Επιπλέον, δε μπορούμε να χρησιμοποιήσουμε την τεχνική συνένωσης των καταχωρητών γινομένου και πολλαπλασιαστή σε ένα διπλό καταχωρητή, και θα πρέπει να χρησιμοποιήσουμε ξεχωριστούς καταχωρητές για κάθε αριθμό, με τον καθένα να έχει μέγεθος ίσο με αυτό του γινομένου. Υπενθυμίζεται ότι για την πρόσθεση δύο αριθμών μεγέθους n ψηφίων, η απ ευθείας απεικόνιση σε υλικό της τεχνικής που ακολουθούμε με το χέρι επιβάλλει τις επιμέρους προσθέσεις να γίνονται σε ΑΛΜ των 2n ψηφίων, ενώ σε κάθε επανάληψη πρέπει να ολισθαίνουμε τον πολλαπλασιαστέο μια θέση προς τα αριστερά. Η απλοποιημένη απεικόνιση, ακολουθώντας την πράξη διαγώνια, χρησιμοποιεί ΑΛΜ των n ψηφίων και ολισθαίνει το μερικό γινόμενο προς τα δεξιά αντί της αριστερής ολίσθησης του πολλαπλασιαστέου. Εφόσον με τους αριθμούς σε παράσταση συμπληρώματος του 2 και χωρίς τη χρήση του αλγόριθμου του Booth απαιτείται μήκος 2n ψηφίων τόσο στην ΑΛΜ όσο και στους καταχωρητές, η απλοποιημένη απεικόνιση δε μας διευκολύνει πια, κι έτσι προτιμούμε την πρώτη απεικόνιση, η οποία δίνεται στο διάγραμμα της επόμενης σελίδας. Για το συγκεκριμένο παράδειγμα όπου η είσοδος της μονάδας πολλαπλασιασμού είναι αριθμοί μεγέθους 6 bits, όλοι οι καταχωρητές καθώς και η ΑΛΜ έχουν μέγεθος 12 bits, ενώ οι αριθμοί εισάγονται στον καταχωρητή-πολλαπλασιαστέο και στον καταχωρητή-πολλαπλασιαστή με προέκταση προσήμου.

8 Πολλαπλασιαστέος Πολλαπλασιαστής ΑΛΜ Έλεγχος Γινόμενο Για τους αριθμούς που μας δίνονται, η πράξη του πολλαπλασιασμού θα γίνει όπως φαίνεται πιο κάτω: 000000010111 πολλαπλασιαστέος A: προέκτεινε σε 12 bits 111111110110 πολλαπλασιαστής B: προέκτεινε σε 12 bits 000000000000 αρχικό γινόμενο = 0 000000000000 B 0 == 0 000000101110 ολίσθησε Α 000000101110 Β 1 == 1, γινόμενο = γινόμενο + Α 000001011100 ολίσθησε Α 000010001010 Β 2 == 1, γινόμενο = γινόμενο + Α 000010111000 ολίσθησε Α 000010001010 Β 3 == 0 000101110000 ολίσθησε Α 000111111010 Β 4 == 1, γινόμενο = γινόμενο + Α 001011100000 ολίσθησε Α 010011011010 Β 5 == 1, γινόμενο = γινόμενο + Α 010111000000 ολίσθησε Α 101010011010 Β 6 == 1, γινόμενο = γινόμενο + Α 101110000000 ολίσθησε Α 011000011010 Β 7 == 1, γινόμενο = γινόμενο + Α 011100000000 ολίσθησε Α 110100011010 Β 8 == 1, γινόμενο = γινόμενο + Α 111000000000 ολίσθησε Α 101100011010 Β 9 == 1, γινόμενο = γινόμενο + Α 110000000000 ολίσθησε Α 011100011010 Β 10 == 1, γινόμενο = γινόμενο + Α 100000000000 ολίσθησε Α 111100011010 Β 11 == 1, γινόμενο = γινόμενο + Α όπου σε κάθε επανάληψη δίνονται η τιμή του μερικού γινομένου και η τιμή του ολισθημένου πολλαπλασιαστέου. Παρατηρήστε ότι: (α) Η πράξη της ολίσθησης του πολλαπλασιαστέου Α γίνεται σε κάθε επανάληψη, ανεξάρτητα από την τιμή του bit του πολλαπλασιαστή Β που ελέγχουμε. Έτσι, η συνεχής ολίσθηση θα μας δώσει έτοιμη την τιμή του ολισθημένου πολλαπλασιαστέου, όταν τη χρειαστούμε. (β) Κατά την ολίσθηση τα ψηφία που ολισθαίνουν αριστερά του Α 11 χάνονται. Αυτό δε μας απασχολεί, διότι με αρχικό μέγεθος των Α και Β στα 6 bits, τα ψηφία που χάνονται μετά το δωδέκατο bit δεν παίζουν ρόλο στην τελική τιμή του γινομένου. (γ) Στην παραπάνω υλοποίηση, η υπομονάδα ελέγχου αποφασίζει αν η πρόσθεση στην ΑΛΜ θα εκτελεστεί ή όχι. Αν δεν εκτελεστεί, γίνεται η ολίσθηση του πολλαπλασιαστέου, και ο αλ-

9 γόριθμος προχωράει στην επόμενη επανάληψη. Εναλλακτικά, μπορούμε να εκτελούμε την πρόσθεση σε κάθε επανάληψη, και αν το bit του πολλαπλασιαστή που εξετάζουμε είναι 0, μηδενίζουμε την είσοδο της ΑΛΜ που έρχεται από τον πολλαπλασιαστέο. Συνήθως είναι πιο εύκολη για το υλικό η δεύτερη υλοποίηση, αλλά η πρώτη μπορεί να είναι πιο γρήγορη, εάν η αποφυγή κάποιας πρόσθεσης επιταχύνει τη διαδικασία, αν δηλαδή η διάρκεια κάθε επανάληψης του αλγόριθμου δεν είναι σταθερή. (Διαφορετικά είτε γίνει η πρόσθεση είτε δε γίνει, η διάρκεια της επανάληψης θα είναι η ίδια.) Από εδώ και πέρα θα υποθέσουμε ότι έχουμε την πρώτη υλοποίηση, οπότε βλέπουμε ότι για τους συγκεκριμένους αριθμούς εκτελούμε 10 προσθέσεις στην ΑΛΜ 3. Ελέγχοντας το αποτέλεσμα της πιο πάνω πράξης, βρίσκουμε ότι έχει τιμή -230 10, που είναι και η σωστή. Ο αλγόριθμος του Booth στηρίζεται στην παρατήρηση ότι μια σειρά από bits με τιμή 1 μπορεί να παρασταθεί αριθμητικά με μία διαφορά. Έτσι, ενώ με τον κλασικό αλγόριθμο πολλαπλασιασμού μια σειρά από 1 στον πολλαπλασιαστή απαιτεί έναν αντίστοιχο αριθμό διαδοχικών προσθέσεων στην ΑΛΜ, με τον αλγόριθμο του Booth μια τέτοια σειρά απαιτεί μόνο δύο πράξεις, μια πρόσθεση για το μειωτέο, και μια αφαίρεση για τον αφαιρετέο. Στη χειρότερη περίπτωση βέβαια, αν ο αλγόριθμος Booth συναντά συνεχόμενες εναλλαγές μεταξύ 0 και 1, μπορεί να φτάσει στο σημείο να εκτελέσει διπλάσιο αριθμό προσθέσεων/αφαιρέσεων από τον κλασικό αλγόριθμο. Η σημαντικότερη διαφορά όμως του αλγόριθμου του Booth από τον κλασικό παρουσιάζεται στους αρνητικούς αριθμούς. Επειδή η προέκταση του προσήμου δημιουργεί είτε μια ακολουθία από 1 είτε μια ακολουθία από 0, δεν προσθέτει πράξεις στον αλγόριθμο του Booth, πράγμα το οποίο όπως είδαμε δε συμβαίνει στον κλασικό αλγόριθμο, όταν έχουμε αρνητικούς α- ριθμούς. Επιπλέον, μπορεί να αποδειχτεί θεωρητικά ότι η εναλλαγή προσθέσεων και αφαιρέσεων του πολλαπλασιαστέου δεν οδηγεί ποτέ σε υπερχείλιση κάποιας επιμέρους πρόσθεσης, είτε ο πολλαπλασιαστέος είναι θετικός είτε είναι αρνητικός. Επομένως, μπορούμε να χρησιμοποιήσουμε την απλοποιημένη μονάδα που υλοποιεί την πράξη του πολλαπλασιασμού, η οποία απαιτεί καταχωρητές και ΑΛΜ μεγέθους n bits, και η οποία εκτελεί την πράξη σε n μόνο επαναλήψεις. Για την περίπτωση όπου n = 6, και για τους αριθμούς που μας δίνονται, η πράξη του πολλαπλασιασμού με τον αλγόριθμο του Booth στην απλοποιημένη υλοποίηση θα γίνει όπως φαίνεται πιο κάτω: 010111 πολλαπλασιαστέος A 110110 πολλαπλασιαστής B 000000 110110 αρχικό γινόμενο = 0 000000 110110 B 0 == 0, Β -1 == 0 000000 011011 ολίσθησε γινόμενο/πολλαπλασιαστή 101001 011011 Β 1 == 1, B 0 == 0, γινόμενο = γινόμενο - Α 110100 101101 ολίσθησε γινόμενο/πολλαπλασιαστή 110100 101101 Β 2 == 1, Β 1 == 1 111010 010110 ολίσθησε γινόμενο/πολλαπλασιαστή 010001 010110 Β 3 == 0, Β 2 == 1, γινόμενο = γινόμενο + Α 001000 101011 ολίσθησε γινόμενο/πολλαπλασιαστή 110001 101011 Β 4 == 1, Β 3 == 0, γινόμενο = γινόμενο - Α 111000 110101 ολίσθησε γινόμενο/πολλαπλασιαστή 111000 110101 Β 5 == 1, Β 4 == 1 111100 011010 ολίσθησε γινόμενο/πολλαπλασιαστή όπου σε κάθε επανάληψη δίνονται οι τιμές του ζεύγους καταχωρητών γινόμενο/πολλαπλασιαστής μετά την πράξη και μετά την ολίσθηση. 3 Με την προϋπόθεση ότι η ολίσθηση κατά ένα ψηφίο είναι πολύ πιο γρήγορη λειτουργία από την πρόσθεση, μας ενδιαφέρει μόνο ο αριθμός των αριθμητικών πράξεων για τον ίδιο αριθμό επαναλήψεων.

10 Παρατηρήστε ότι: (α) Κάθε πράξη της ΑΛΜ αναφέρεται μόνο στον καταχωρητή γινόμενο, δηλαδή στα 6 πιο σημαντικά bits από τα 12 που βλέπουμε. Το διάγραμμα του προηγούμενου αλγόριθμου είχε μια πιο άμεση αντιστοιχία με την εκτέλεση της πράξης που κάνουμε με το χέρι, απ ό,τι αυτό το διάγραμμα. Το νέο διάγραμμα είναι προσαρμοσμένο στο απλοποιημένο υλικό που τώρα χρησιμοποιούμε. (β) Η δεξιά ολίσθηση που χρησιμοποιούμε στον αλγόριθμο είναι η αριθμητική δεξιά ολίσθηση, η οποία εισάγει στο πιο σημαντικό ψηφίο του καταχωρητή αντίγραφο του προσήμου του αριθμού. (γ) Ο αλγόριθμος Booth εφαρμοσμένος στην περίπτωση των αριθμών Α και Β έχει μειώσει όχι μόνο τον αριθμό επαναλήψεων, αλλά και τον αριθμό των πράξεων που αντιστοιχούν στα 6 bits του πολλαπλασιαστή. Έτσι εκτελούμε μόνο 3 πράξεις στην ΑΛΜ, ενώ πριν εκτελέσαμε 10. Η δυνατότητα χρήσης του απλοποιημένου υλικού για πολλαπλασιασμό προσημασμένων αριθμών στη μορφή συμπληρώματος του 2 τονίζει ακόμα πιο πολύ τη σημασία του αλγόριθμου Booth. Κάνοντας την επαλήθευση για το παραπάνω αποτέλεσμα, βλέπουμε ότι είναι πράγματι το σωστό, -230 10. Β. Η υλοποίηση του ελέγχου της μονάδας πολλαπλασιασμού γίνεται σε δύο επίπεδα: Στο επίπεδο του κυκλώματος ελέγχου που φροντίζει για το συνολικό χρονισμό της μονάδας, και στο επίπεδο του κυκλώματος ελέγχου που υλοποιεί τον αλγόριθμο Booth. Στην παρούσα άσκηση μας απασχολεί το δεύτερο από τα παραπάνω επίπεδα. Για το σκοπό αυτό, θα πρέπει να υλοποιήσουμε σε ένα συνδυαστικό κύκλωμα τον έλεγχο που ο αλγόριθμος κάνει στα διαδοχικά bits του πολλαπλασιαστή. Έτσι, πρέπει πρώτα να ορίσουμε τα σήματα ελέγχου που θέλουμε να παίρνουμε από το κύκλωμα αυτό σα συνάρτηση των δύο bits που εξετάζουμε κάθε φορά. Παρατηρώντας τις λειτουργίες που εκτελούνται σε κάθε επανάληψη με τον αλγόριθμο Booth βλέπουμε ότι ο αλγόριθμος επιδρά σε δύο αποφάσεις της υπομονάδας ελέγχου. Πρώτον στην απόφαση αν θα γίνει μια πράξη στην ΑΛΜ και δεύτερον στην απόφαση ποια πράξη θα γίνει. Άρα θα σχεδιάσουμε δυο λογικές συναρτήσεις που να μας δίνουν τις επιθυμητές αποφάσεις σε ψηφιακά σήματα. Μπορούμε εύκολα να κατασκευάσουμε τους πίνακες αλήθειας αυτών των συναρτήσεων στον παρακάτω πίνακα: Β i Β i-1 πράξη/όχι πράξη αφαίρεση/πρόσθεση 0 0 0 x 0 1 1 0 1 0 1 1 1 1 0 x απ όπου βλέπουμε ότι: πράξη/όχι πράξη = Β i B i-1 +B i B i-1 αφαίρεση/πρόσθεση = B i B i-1 Οι συναρτήσεις αυτές απεικονίζονται εύκολα σε ένα συνδυαστικό κύκλωμα με τη βοήθεια ενός αποκωδικοποιητή 2 4 και μιας πύλης Η. Ένα τέτοιο κύκλωμα είναι το εξής: Β i Β i-1 αφαίρεση/πρόσθεση πράξη/όχι πράξη 00 01 10 11 αποκωδικοποιητής

11 Η συνολική υπομονάδα ελέγχου της μονάδας πολλαπλασιασμού θα επιμελείται τον έλεγχο χρονισμού των επαναλήψεων, καθώς και τον έλεγχο των λειτουργιών ολίσθησης, που δεν επηρεάζονται από το συγκεκριμένο αλγόριθμο πολλαπλασιασμού που χρησιμοποιείται. Γ. Στην υλοποίηση της μονάδας πολλαπλασιασμού σα συνδυαστικό κύκλωμα με αθροιστές διάδοσης κρατουμένου, όλες οι πράξεις στους αθροιστές του 1 bit εκτελούνται, είτε το bit του πολλαπλασιαστή που ελέγχεται έχει τιμή 0, είτε έχει τιμή 1. Στην πρώτη περίπτωση, οι πύλες ΚΑΙ που μεσολαβούν μεταξύ του ολισθημένου πολλαπλασιαστέου και του αθροιστή, μηδενίζουν την είσοδο του αθροιστή. Μ άλλα λόγια, οι επιμέρους προσθέσεις εκτελούνται με το μηδέν για τον ένα προσθετέο. Στη δεύτερη περίπτωση βέβαια, οι προσθέσεις εκτελούνται κανονικά, μεταξύ του μερικού γινομένου που είναι το αποτέλεσμα από το παραπάνω επίπεδο αθροιστών και του ολισθημένου πολλαπλασιαστέου. Ο αλγόριθμος Booth επομένως δε συντομεύει την πράξη μεταξύ μη προσημασμένων αριθμών, καθώς ο αριθμός των κανονικά εκτελεσμένων προσθέσεων δεν επηρεάζει το χρόνο ε- κτέλεσης του πολλαπλασιασμού. Όπως είδαμε όμως νωρίτερα, ο αλγόριθμος Booth επιτρέπει τον πολλαπλασιασμό προσημασμένων αριθμών με τρόπο που να μην απαιτείται προέκταση προσήμου για τον αρνητικό α- ριθμό, όταν βέβαια θέλουμε να πάρουμε το γινόμενο σε μέγεθος μεγαλύτερο από το μέγεθος των παραγόντων του. Στην περίπτωση τότε αυτή, ο αλγόριθμος Booth θα επιτρέψει την πράξη σε λιγότερα επίπεδα απ όσα θα χρειαζόμασταν χωρίς αυτόν. Άσκηση 4: Ο αλγόριθμος του Booth για πολλαπλασιασμό σταθερής υποδιαστολής ελέγχει 2 bits του πολλαπλασιαστή σε κάθε βήμα της εκτέλεσης της πράξης του πολλαπλασιασμού. Αν ελέγχουμε 3 bits κάθε φορά αντί για 2, μπορούμε να υπολογίζουμε το γινόμενο με ρυθμό 2 bits ανά βήμα. Α. Κατασκευάστε έναν επαναληπτικό αλγόριθμο που υλοποιεί μια τέτοια τεχνική, εξηγώντας τις επιλογές της πράξης κάθε επανάληψης. Ποιες είναι τώρα οι τιμές που συμμετέχουν στις επιμέρους προσθέσεις του πολλαπλασιασμού και πώς θα τις πάρετε από τον πολλαπλασιαστέο; Πόσα ψηφία χρειάζεστε στην υπομονάδα που εκτελεί τις προσθέσεις; Β. Δοκιμάστε το νέο αλγόριθμο σε δύο αριθμούς των 6 bits κι εξετάστε αν αυτός είναι πιο γρήγορος από τον αλγόριθμο Booth για το παράδειγμά σας. Απάντηση: Α. Γνωρίζουμε ότι στον αλγόριθμο Booth ο έλεγχος των ψηφίων του πολλαπλασιαστή ανά ζεύγος δίνει τις ακόλουθες επιλογές πράξης ανά επανάληψη: Ψηφίο i Ψηφίο i-1 Επιλογή 0 0 Καμία πράξη 0 1 Πρόσθεση 1 0 Αφαίρεση 1 1 Καμία πράξη Μεταξύ διαδοχικών επιλογών συμβαίνει ολίσθηση του πολλαπλασιαστέου προς τα αριστερά (ή ισοδύναμα ολίσθηση του μερικού γινομένου προς τα δεξιά) κατά ένα ψηφίο. Ένας συνδυασμός των ελέγχων διαδοχικών ζευγών ψηφίων του πολλαπλασιαστή οδηγεί σε συνδυασμό διαδοχικών επαναλήψεων του αλγόριθμου Booth. Έτσι, για να υπολογίζουμε το γινόμενο με ρυθμό 2 ψηφίων ανά επανάληψη, πρέπει να συνδυάζουμε δύο διαδοχικές επιλογές πράξεων σε μία, ελέγχοντας 3 ψηφία ανά επανάληψη. Όμως, για να συνδυαστούν οι δύο διαδοχικές επιλογές πράξεων σε μία, πρέπει και η ολίσθηση που μεσολαβεί μεταξύ αυτών, να συνδυαστεί με την επόμενη ολίσθηση, δίνοντας μια ενιαία ολίσθηση κατά δύο ψηφία.

12 Ο συνδυασμός μιας επανάληψης του αρχικού αλγόριθμου με την επόμενη προϋποθέτει επομένως αλλαγή στη σειρά των λειτουργιών που εκτελούνται. Ενώ αρχικά έχουμε μια σειρά λειτουργιών επιλογή πράξης ολίσθηση επιλογή πράξης ολίσθηση, ο συνδυασμός διαδοχικών επιλογών πράξεων και ολισθήσεων γίνεται μόνο, αν η σειρά είναι επιλογή πράξης επιλογή πράξης ολίσθηση ολίσθηση. Η αντιμετάθεση των δύο κεντρικών λειτουργιών ο- λίσθησης και επιλογής πράξης μπορεί να γίνει, μόνο αν εξασφαλίζεται η ορθότητα του αποτελέσματος. Επειδή η ολίσθηση του πολλαπλασιαστέου προς τα αριστερά κατά ένα ψηφίο ισοδυναμεί με διπλασιασμό του πολλαπλασιαστέου, για να μπορούμε να εκτελέσουμε την πρώτη ολίσθηση μετά τη δεύτερη επιλογή πράξης, πρέπει η επιλογή αυτή να αφορά πράξη με το διπλάσιο του πολλαπλασιαστέου. Για παράδειγμα, η τριάδα ψηφίων 010, που για το πρώτο από δεξιά ζεύγος δίνει την επιλογή αφαίρεση πολλαπλασιαστέου, ενώ για το δεύτερο από δεξιά ζεύγος δίνει την επιλογή πρόσθεση πολλαπλασιαστέου, μας δίνει τη συνδυασμένη πράξη αφαίρεση πολλαπλασιαστέου και πρόσθεση διπλάσιου πολλαπλασιαστέου, δηλαδή πρόσθεση πολλαπλασιαστέου. Παρόμοια, η τριάδα ψηφίων 100, που για το πρώτο από δεξιά ζεύγος δίνει την επιλογή καμία πράξη ενώ για το δεύτερο από δεξιά ζεύγος δίνει την επιλογή αφαίρεση πολλαπλασιαστέου, μας δίνει τη συνδυασμένη πράξη αφαίρεση διπλάσιου πολλαπλασιαστέου. Οι επιλογές πράξης του νέου αλγόριθμου που προκύπτει μετά από συνδυασμό διαδοχικών επαναλήψεων του αρχικού, μπορούν να αποδειχτούν και θεωρητικά, από την έκφραση της τιμής του γινομένου. Έστω λοιπόν ότι πολλαπλασιάζουμε δύο αριθμούς Α και Β, όπου Α είναι ο πολλαπλασιαστέος και Β ο πολλαπλασιαστής. Έστω ακόμα ότι ο πολλαπλασιαστής έχει αναπαράσταση: Β Β n-1 Β n-2 Β 1 Β 0 μεγέθους n ψηφίων. Αν ο Β είναι μη αρνητικός, η τιμή του δίνεται από τη σχέση: T(Β) = Β n-1 2 n-1 +Β n-2 2 n-2 + +Β 1 2+Β 0 Η τιμή του γινομένου Α Β θα είναι: Τ(Α Β) = Τ(Α) (Β n-1 2 n-1 +Β n-2 2 n-2 + +Β 1 2+Β 0 ) = = Τ(Α) Β n-1 2 n-1 + Τ(Α) Β n-2 2 n-2 + + Τ(Α) Β 1 2 + Τ(Α) Β 0 = = Τ(Α) (Β n-1 2 n - Β n-1 2 n-1 ) + Τ(Α) (Β n-2 2 n-1 - Β n-2 2 n-2 ) + + Τ(Α) (Β 1 2 2 - Β 1 2) + Τ(Α) Β 0 = = Τ(Α) Β n-1 2 n + Τ(Α) (-Β n-1 + Β n-2 ) 2 n-1 + Τ(Α) (-Β n-2 + Β n-3 ) 2 n-2 + + Τ(Α) (-Β 1 + Β 0 ) 2 + Τ(Α) (-Β 0 + Β -1 ) = = Τ(Α) (-Β n-1 + Β n-2 ) 2 n-1 + Τ(Α) (-Β n-2 + Β n-3 ) 2 n-2 + + Τ(Α) (-Β 1 + Β 0 ) 2 + Τ(Α) (-Β 0 + Β -1 ) όπου Β n-1 = 0, επειδή ο Β είναι μη αρνητικός, και Β -1 = 0 εξ ορισμού. Η σχέση στην οποία καταλήξαμε εκφράζει τον αλγόριθμο του Booth για μη αρνητικό πολλαπλασιαστή. Υποθέτουμε ότι ο n είναι άρτιος, διαφορετικά επεκτείνουμε τον Β κατά ένα ψηφίο. Έτσι, θέτοντας n=2k, συνδυάζουμε τα ζεύγη ψηφίων της παραπάνω σχέσης ανά δύο, και παίρνουμε: Τ(Α Β) = Τ(Α) (-Β 2k-1 + Β 2k-2 ) 2 2k-1 + Τ(Α) (-Β 2k-2 + Β 2k-3 ) 2 2k-2 + + Τ(Α) (-Β 1 +Β 0 ) 2 + Τ(Α) (-Β 0 + Β -1 ) = = Τ(Α) [(-Β 2k-1 + Β 2k-2 ) 2 2k-1 + (-Β 2k-2 + Β 2k-3 ) 2 2k-2 ] + + Τ(Α) [(-Β 1 + Β 0 ) 2 + (-Β 0 + Β -1 )] = = Τ(Α) [(-Β 2k-1 + Β 2k-2 ) 2 + (-Β 2k-2 + Β 2k-3 )] 2 2k-2 + + Τ(Α) [(-Β 1 + Β 0 ) 2 + (-Β 0 + Β -1 )] = = Τ(Α) (-2 Β 2k-1 + Β 2k-2 + Β 2k-3 ) 2 2k-2 + + Τ(Α) (-2 Β 1 + Β 0 + B -1 ) Αν ο Β είναι αρνητικός σε παράσταση συμπληρώματος του 2, η τιμή του δίνεται από τη σχέση: T(Β) = -[(1-Β n-1 ) 2 n-1 +(1-Β n-2 ) 2 n-2 + +(1-Β 1 ) 2+(1-Β 0 )+1]

13 η οποία, επαναλαμβάνοντας τα παραπάνω με Β n-1 = 1, οδηγεί σε παρόμοια έκφραση για την τιμή του γινομένου Α Β. Η έκφραση της τιμής του γινομένου Α Β στην οποία καταλήξαμε μας δίνει το ζητούμενο, δηλαδή ένα νέο αλγόριθμο που προχωράει 2 ψηφία ανά επανάληψη, στην i επανάληψη του οποίου, όπου 1 i k, θα έχουμε την επιλογή πράξης με τον πολλαπλασιαστέο Α, που αντιστοιχεί στον παράγοντα -2 Β 2i-1 + Β 2i-2 + Β 2i-3. Για τα πιο πάνω παραδείγματα, για την τριάδα ψηφίων 010 παίρνουμε: -2 Β 2i-1 + Β 2i-2 + Β 2i-3 = 1 κι επομένως την πράξη πρόσθεση πολλαπλασιαστέου, ενώ για την τριάδα ψηφίων 100 παίρνουμε: -2 Β 2i-1 + Β 2i-2 + Β 2i-3 = -2 δηλαδή την πράξη αφαίρεση διπλάσιου πολλαπλασιαστέου. Συνολικά ο νέος αλγόριθμος ελέγχει τα ψηφία του πολλαπλασιαστή ανά τριάδα και δίνει τις επιλογές πράξης ανά επανάληψη που δίνονται στον παρακάτω πίνακα: Ψηφίο 2i-1 Ψηφίο 2i-2 Ψηφίο 2i-3 Επιλογή 0 0 0 Καμία πράξη 0 0 1 Πρόσθεση Α 0 1 0 Πρόσθεση Α 0 1 1 Πρόσθεση 2 Α 1 0 0 Αφαίρεση 2 Α 1 0 1 Αφαίρεση Α 1 1 0 Αφαίρεση Α 1 1 1 Καμία πράξη Μεταξύ των διαδοχικών επιλογών συμβαίνει ολίσθηση του πολλαπλασιαστέου προς τα αριστερά (ή ισοδύναμα ολίσθηση του μερικού γινομένου προς τα δεξιά) κατά δύο ψηφία. Από την πιο πάνω ανάλυση του νέου αλγόριθμου διαπιστώνουμε ότι οι αριθμοί που συμμετέχουν στις πράξεις είναι ο πολλαπλασιαστέος και ο διπλάσιος του πολλαπλασιαστέου. Στον αρχικό αλγόριθμο του Booth συμμετέχει μόνο ο πολλαπλασιαστέος, ο οποίος αποτελεί είσοδο της μονάδας πολλαπλασιασμού. Ο διπλάσιος του πολλαπλασιαστέου που χρειαζόμαστε τώρα, μπορεί να ληφθεί άμεσα από τον πολλαπλασιαστέο με ολίσθηση των ψηφίων του κατά μία θέση προς τα αριστερά. Ο αριθμός αυτός δε χρειάζεται να αποθηκευτεί, και μπορεί να παρέχεται στην υπομονάδα πρόσθεσης/αφαίρεσης με μετατοπισμένη σύνδεση του καταχωρητή όπου τοποθετείται ο πολλαπλασιαστέος, με τις εισόδους της. Ένας πολυπλέκτης θα πρέπει να επιλέγει κάθε φορά την τιμή που θα χρησιμοποιείται, σύμφωνα με τον αλγόριθμο. Όσο αφορά το μέγεθος της υπομονάδας πρόσθεσης/αφαίρεσης, αυτό θα πρέπει να είναι ίσο με το μέγιστο μέγεθος των αριθμών που συμμετέχουν στις πράξεις. Εφόσον στις πράξεις που εκτελούνται συμμετέχει ο διπλάσιος του πολλαπλασιαστέου, ο οποίος έχει μέγεθος κατά ένα ψηφίο μεγαλύτερο από τον πολλαπλασιαστέο, συμπεραίνουμε ότι η υπομονάδα πρόσθεσης/αφαίρεσης πρέπει να έχει το ίδιο μέγεθος, δηλαδή το μέγεθος του πολλαπλασιαστέου συν ένα ψηφίο. Β. Ας εφαρμόσουμε το νέο αλγόριθμο στους δύο αριθμούς μεγέθους 6 bits Α = 010111 και Β = 110110, τους οποίους είδαμε στην προηγούμενη άσκηση. Τα βήματα του αλγόριθμου για τους δύο αριθμούς φαίνονται στο παρακάτω διάγραμμα: 010111 πολλαπλασιαστέος A 110110 πολλαπλασιαστής B 0000000110110 αρχικό γινόμενο = 0 1010010110110 Β 1 == 1, B 0 == 0, Β -1 == 0, γινόμενο = γινόμενο - 2Α 1110100101101 ολίσθησε γινόμενο/πολλαπλασιαστή 0100010101101 Β 3 == 0, Β 2 == 1, B 1 == 1, γινόμενο = γινόμενο + 2Α

14 0001000101011 ολίσθησε γινόμενο/πολλαπλασιαστή 1110001101011 Β 5 == 1, Β 4 == 1, Β 3 == 0, γινόμενο = γινόμενο - Α 111100011010 ολίσθησε γινόμενο/πολλαπλασιαστή όπου σε κάθε επανάληψη δίνονται οι τιμές του ζεύγους καταχωρητών γινόμενο/πολλαπλασιαστής μετά την πράξη και μετά την ολίσθηση. Παρατηρήστε ότι: (α) Κάθε πράξη της ΑΛΜ γίνεται στα 7 πιο σημαντικά bits του ζεύγους καταχωρητών γινόμενο/πολλαπλασιαστής, επομένως το μέγεθος του καταχωρητή γινομένου είναι 7 bits. Αν χρησιμοποιούσαμε μόνο 6 bits, θα είχαμε λάθος πράξη από την πρώτη κιόλας επανάληψη! (β) Σε κάθε επανάληψη κάνουμε αριθμητική ολίσθηση προς τα δεξιά του ζεύγους καταχωρητών γινόμενο/πολλαπλασιαστής κατά δύο ψηφία. (γ) Το τελικό αποτέλεσμα είναι μεγέθους 12 bits, κάτι που δεν επηρεάζεται από το γεγονός ότι χρησιμοποιούμε μεγαλύτερο καταχωρητή για την αποθήκευση του μερικού γινομένου. Ο νέος αλγόριθμος μειώνει στο μισό τον αριθμό επαναλήψεων από τον αρχικό αλγόριθμο Booth, ανεξάρτητα από τον πολλαπλασιαστή. Αν μας ενδιαφέρει μόνο ο αριθμός των αριθμητικών πράξεων, παρατηρούμε ότι για το συγκεκριμένο παράδειγμα εκτελούμε 3 πράξεις, όσες εκτελεί και ο αρχικός αλγόριθμος Booth. Άσκηση 5: Έστω μια διάταξη πρόσθεσης 5 μη προσημασμένων δυαδικών αριθμών των 8 bits. Η διάταξη χρησιμοποιεί πλήρεις αθροιστές () για κάθε 1 bit πρόσθεσης και δεν είναι επαναληπτική. Αγνοήστε τα κρατούμενα εισόδου και εξόδου. Θεωρήστε τους αριθμούς 38, 31, 66, 17 και 77 (εκφρασμένους στο δεκαδικό σύστημα) και δείξτε τα βήματα στην πρόσθεσή τους, όταν οι είναι συνδεμένοι (α) σε διάταξη διάδοσης κρατουμένου και (β) σε διάταξη διατήρησης κρατουμένου, όπου το τελευταίο επίπεδο πρόσθεσης υλοποιείται με την τεχνική διάδοσης κρατουμένου. Σε κάθε περίπτωση υπολογίστε πόσο χρόνο διαρκεί η πράξη, σαν τη μέγιστη απόσταση σε αριθμό αθροιστών που θα διανύσει κάποιο σήμα κατά την εκτέλεση αυτής. Τι παρατηρείτε; Απάντηση: Κατ αρχήν εκφράζουμε τους αριθμούς στο δυαδικό σύστημα αρίθμησης σε μη προσημασμένη αναπαράσταση των 8 bits: 38 (10) = 00100110 (2) 31 (10) = 00011111 (2) 66 (10) = 01000010 (2) 17 (10) = 00010001 (2) 77 (10) = 01001101 (2) (α) Ένα σύστημα διάδοσης κρατουμένου υπολογίζει ένα τέτοιο άθροισμα προσθέτοντας κάθε φορά δύο αριθμούς. Στο ανώτερο επίπεδο προσθέτει τους δύο πρώτους αριθμούς, και στη συνέχεια προσθέτει ένα νέο αριθμό σε κάθε μερικό άθροισμα, μέχρι να φτάσει στο κατώτερο επίπεδο που ολοκληρώνει την πρόσθεση, όπως φαίνεται στο πρώτο διάγραμμα της επόμενης σελίδας. Τα βήματα αυτής της πράξης στο σύστημα διάδοσης κρατουμένου φαίνονται πιο κάτω: 00100110 00011111 01000101 01000010 10000111 00010001 10011000 01001101 11100101

15 a 7 b 7 c 7 d 7 e 7 a 6 b 6 c 6 d 6 e 6 a 0 b 0 c 0 d 0 e 0 0 0 0 0 s 7 s 6 s 0 Σε κάθε επιμέρους πρόσθεση το κρατούμενο διαδίδεται από τα δεξιά προς τα αριστερά. (β) Ένα σύστημα διατήρησης κρατουμένου (carry-save) δεν προωθεί το κρατούμενο από δεξιά προς τα αριστερά στο ίδιο επίπεδο, αλλά από πάνω προς τα κάτω μεταξύ επιπέδων μέχρι το τελευταίο επίπεδο της πρόσθεσης, διατηρώντας το σε κάθε επίπεδο, όπως δείχνει το πιο κάτω διάγραμμα. Κάθε ενδιάμεση πρόσθεση δηλαδή προσθέτει τρεις αριθμούς (υπενθυμίζεται ότι ο προσθέτει 3 bits συμπεριλαμβανομένου του κρατουμένου εισόδου) και παράγει ένα άθροισμα στο οποίο δε συνυπολογίζονται τα επιμέρους κρατούμενα του ίδιου επιπέδου, αλλά μόνο των προηγούμενων επιπέδων, τα δε επιμέρους κρατούμενα του επιπέδου προωθούνται στο επόμενο επίπεδο. a 7 b 7 c 7 d 7 e 7 a 6 b 6 c 6 d 6 e 6 a 0 b 0 c 0 d 0 e 0 0 0 0 0 s 7 s 6 s 0

16 Τα βήματα αυτής της πράξης στο σύστημα διατήρησης κρατουμένου είναι τα εξής: 00100110 00011111 01111011 01000010 00001100 01100110 00010001 00110010 00011001 01001101 11001100 11100101 όπου κάθε ζευγάρι ενδιάμεσων αποτελεσμάτων είναι το άθροισμα των 3 αντίστοιχων αριθμών χωρίς επιμέρους κρατούμενα (μ άλλα λόγια το αποκλειστικό Ή των αντίστοιχων ψηφίων) και η λέξη των κρατουμένων (κρατούμενο έχουμε όταν 2 τουλάχιστον από κάθε 3 ψηφία είναι 1), όπως προωθείται στο επόμενο επίπεδο, δηλαδή ολισθημένη κατά μία θέση αριστερά. Στην πρώτη διάταξη το μέγιστο μήκος διαδρομής κάποιου σήματος περιλαμβάνει διαδρομή τόσο κατά μήκος οποιασδήποτε από τις επιμέρους προσθέσεις των 8 bits, όσο και κατά ύψος από το πρώτο στο τελευταίο επίπεδο. Επομένως αυτό θα είναι ίσο με 8+3=11, και βέβαια α- ντιστοιχεί στη διάδοση του κρατουμένου εισόδου της διάταξης μέχρι την παραγωγή του πιο σημαντικού ψηφίου του αθροίσματος. Στη δεύτερη διάταξη το αντίστοιχο μέγιστο μήκος διαδρομής περιλαμβάνει διαδρομή κατά ύψος, αλλά και κατά μήκος της τελευταίας πρόσθεσης. Άρα αυτό θα είναι ίσο με 4+7=11, αντιστοιχώντας και πάλι στη διάδοση του κρατουμένου εισόδου της διάταξης μέχρι την παραγωγή του πιο σημαντικού ψηφίου του αθροίσματος. Παρατηρούμε βέβαια ότι ο χρόνος εκτέλεσης της πράξης της πρόσθεσης των 5 αριθμών είναι ο ίδιος και με τις δύο διατάξεις. Η διαφορά των δύο διατάξεων βρίσκεται στην ευκολία με την οποία μπορεί να βελτιωθεί το κύκλωμα στη δεύτερη διάταξη σχετικά με την πρώτη. Πιο συγκεκριμένα, στην πρώτη διάταξη πρέπει να επιταχύνουμε όλες τις επιμέρους προσθέσεις, ενώ στη δεύτερη μόνο την τελευταία, καθώς οι επιμέρους προσθέσεις ολοκληρώνονται με καθυστέρηση μόνο 1. Η χρησιμοποίηση έτσι ενός αθροιστή πρόβλεψης κρατουμένου μπορεί να λύσει το πρόβλημα χρόνου στη δεύτερη διάταξη. Στην πρώτη όμως διάταξη, ακόμα κι αν χρησιμοποιήσουμε τέτοιους αθροιστές σε κάθε επίπεδο (πράγμα που δεν αποτελεί ρεαλιστική λύση, δεδομένου του κόστους αυτών σε χώρο), δεν πρόκειται ποτέ να επιτύχουμε επιμέρους πρόσθεση σε χρόνο 1. Άσκηση 6: Θεωρήστε τον πολλαπλασιασμό σταθερής υποδιαστολής με το βελτιωμένο αλγόριθμο Booth που προχωράει κατά 2 ψηφία σε κάθε βήμα, εξετάζοντας τριάδες ψηφίων. Χρησιμοποιώντας στοιχειώδεις αθροιστές σε επίπεδο bit, σχεδιάστε μια μονάδα πολλαπλασιασμού αριθμών 8 bit που να υλοποιεί τον αλγόριθμο αυτό μη επαναληπτικά, με βάση την τεχνική διατήρησης κρατουμένου. Η έξοδος της μονάδας πρέπει να είναι μεγέθους 16 bit. Επαληθεύστε τη λειτουργία της μονάδας με τους αριθμούς 01010011(πολλαπλασιαστέος) και 11010010 (πολλαπλασιαστής). Απάντηση: Όπως είδαμε στο μάθημα, η μη επαναληπτική υλοποίηση του κλασικού αλγόριθμου πολλαπλασιασμού με την τεχνική διατήρησης κρατουμένου είναι σχετικά απλή τουλάχιστον για μη προσημασμένους αριθμούς. Ο κύριος λόγος γι αυτό είναι το γεγονός ότι σε κάθε επίπεδο πρόσθεσης έχουμε απλή επιλογή νέας εισόδου επιπλέον δηλαδή των εξόδων του προηγούμενου επιπέδου μεταξύ του πολλαπλασιαστέου και της τιμής 0. Αν δηλαδή το ψηφίο του πολλαπλασιαστή που εξετάζουμε είναι το 1, ως νέα είσοδο στο αντίστοιχο επίπεδο διατήρησης κρατουμένου επιλέγουμε την τιμή του πολλαπλασιαστέου, ενώ αν το ψηφίο είναι το 0, επιλέγουμε την τιμή 0. Η επιλογή αυτή δε χρειάζεται παρά μόνο μια πύλη λογικού KAI για την υλοποίησή της, όπως φαίνεται στο σχήμα της μονάδας των 4 bit που μελετήσαμε και ξαναδίνουμε και στη συνέχεια, και όπου πολλαπλασιαστέος είναι ο Α και πολλαπλασιαστής ο

17 A 3 A 2 A 1 A 0 B 0 B 1 Η Π Π Η B 2 Π Π Π Η B 3 Αθροιστής Πρόβλεψης Κρατουμένου Γ 7 Γ 6 Γ 5 Γ 4 Γ 3 Γ 2 Γ 1 Γ 0 Β. Η μόνη πολυπλοκότητα της μονάδας αυτής βρίσκεται στη μετατόπιση που υφίστανται οι επιμέρους πράξεις προς τα αριστερά μεταξύ των διαδοχικών επιπέδων, η οποία όμως είναι αναμενόμενη, εξαιτίας της διαφορετικής σημαντικότητας των ψηφίων του πολλαπλασιαστή που κάθε φορά εξετάζουμε. Στην περίπτωση του αλγόριθμου Booth, οι επιλογές είναι πιο περίπλοκες. Συγκεκριμένα, για κάθε νέο έλεγχο ψηφίων του πολλαπλασιαστή πρέπει να επιλέγουμε μεταξύ πρόσθεσης του πολλαπλασιαστέου, της τιμής 0, αλλά και του αντίθετου του πολλαπλασιαστέου. Βέβαια, στον επαναληπτικό αλγόριθμο, όπως ήδη έχουμε δει, η υλοποίηση του ελέγχου της μονάδας για κάθε επανάληψη είναι σχετικά εύκολη, διότι οι παραπάνω επιλογές ανάγονται σε: (α) Επιλογή μεταξύ πρόσθεσης και αφαίρεσης, με τη βοήθεια κυκλώματος που εκτελεί μαζί πρόσθεση και αφαίρεση με την κλασική μέθοδο. Το σήμα αφαίρεση/πρόσθεση που επιλέγει την πράξη, υλοποιεί ουσιαστικά την επιλογή μεταξύ του πολλαπλασιαστέου και του αντίθετού του. (β) Επιλογή της πρόσθεσης με την τιμή 0, με τη βοήθεια μιας πύλης λογικού ΚΑΙ που παρεμβάλλεται μεταξύ του πολλαπλασιαστέου και της αντίστοιχης εισόδου του κυκλώματος πρόσθεσης/αφαίρεσης. Το σήμα πράξη/όχι πράξη οδηγεί την πύλη αυτή, ώστε να μηδενίζει τον πολλαπλασιαστέο όταν γίνεται αυτή η επιλογή. Από την άλλη μεριά, για την υλοποίηση του ελέγχου των επαναλήψεων, που ολοκληρώνει το κύκλωμα ελέγχου της μονάδας, δεν υπάρχει ουσιαστική διαφορά μεταξύ του κλασικού αλγόριθμου και του αλγόριθμου Booth. Το κύκλωμα ελέγχου των επαναλήψεων θα είναι ακολουθιακό και για τους δύο αλγόριθμους, και ανάλογα με το χρονισμό και την επιλογή των καταστάσεων, είναι πιθανό αντί για μηδενισμό της μιας εισόδου του κυκλώματος πρόσθεσης/αφαίρεσης με την πύλη λογικού ΚΑΙ, να παρακάμπτεται πλήρως το κύκλωμα αυτό με απ ευθείας ολίσθηση της προηγούμενης τιμής του καταχωρητή γινόμενο/πολλαπλασιαστής. Τη συνολική υλοποίηση του κυκλώματος ελέγχου με τέτοια δυνατότητα θα τη μελετήσουμε σε άσκηση επόμενης ενότητας. Όσο αφορά την επέκταση του αλγόριθμου Booth για έλεγχο τριάδας αντί ζεύγους ψηφίων, αυτό που αλλάζει στην υλοποίηση είναι η υποστήριξη για πράξη με το διπλάσιο του πολλαπλασιαστέου στο κύκλωμα πρόσθεσης/αφαίρεσης, καθώς και η αντίστοιχη πρόσθετη επιλογή βάσει των τριών ψηφίων του πολλαπλασιαστή που εξετάζονται, κάτι που έχουμε αναλύσει σε προηγούμενη άσκηση.

18 Στη μη επαναληπτική υλοποίηση του αλγόριθμου Booth τώρα, ενώ η επιλογή εισόδων μπορεί να γίνει με τη βοήθεια παρόμοιων σημάτων με τα παραπάνω, πρέπει να εξετάσουμε καλύτερα τον υπολογισμό του αντίθετου του πολλαπλασιαστέου. Ο υπολογισμός αυτός δε χρειάζεται στην επαναληπτική υλοποίηση, επειδή εκεί μπορούμε να κάνουμε κατ ευθείαν αφαίρεση αντί πρόσθεσης του αντίθετου του πολλαπλασιαστέου. Φυσικά, το ίδιο θα συνέβαινε με κάποια μη επαναληπτική υλοποίηση, βασισμένη όμως στην κλασική πρόσθεση, και όχι στην τεχνική διατήρησης κρατουμένου, αφού και τότε θα μπορούσαμε να έχουμε κύκλωμα αφαίρεσης σε κάθε επίπεδο αν και με μια μικρή διόρθωση που θα παραβλέψουμε διότι δεν αφορά την παρούσα άσκηση. Ας δούμε όμως πιο αναλυτικά τι πρόβλημα εμφανίζεται στην τεχνική διατήρησης κρατουμένου σε σχέση με την υποστήριξη αφαίρεσης. Όπως είδαμε στο μάθημα, η επέκταση ενός αθροιστή για υποστήριξη αφαίρεσης συνίσταται στην προσθήκη πυλών αποκλειστικού Ή στη μία είσοδο, και σύνδεση του σήματος αφαίρεση/πρόσθεση τόσο με τις πύλες αυτές όσο και με το κρατούμενο εισόδου του κυκλώματος. Για την υποστήριξη λοιπόν του αντίθετου του πολλαπλασιαστέου σε μια διάταξη όπως αυτή του παραπάνω σχήματος παραβλέποντας προς στιγμή το γεγονός ότι η διάταξη υλοποιεί τον κλασικό αλγόριθμο πολλαπλασιασμού, πρέπει (α) να συνδέσουμε τέτοιες πύλες στις αντίστοιχες εισόδους και (β) να συνδέσουμε το σήμα αφαίρεση/πρόσθεση στα κατάλληλα σημεία της διάταξης. Προφανώς, είναι απλό να τοποθετήσουμε πύλες αποκλειστικού Ή σε όλες τις εισόδους που προέρχονται από τον πολλαπλασιαστέο Α, όπως και να τις συνδέσουμε με το σήμα αφαίρεση/πρόσθεση. Η δυσκολία όμως βρίσκεται στη σύνδεση του σήματος με το κατάλληλο σημείο, ώστε το συμπλήρωμα ως προς 1 να μετατραπεί σε συμπλήρωμα ως προς 2. Αυτό το σημείο στον κλασικό αθροιστή είναι το κρατούμενο εισόδου, εδώ όμως τέτοιο σημείο δεν είναι πάντα διαθέσιμο! Πιο συγκεκριμένα, για να μπορούμε να μετατρέψουμε το συμπλήρωμα ως προς 1 το οποίο προκύπτει με την αντιστροφή των ψηφίων μέσα από τις πύλες αποκλειστικού Ή σε συμπλήρωμα ως προς 2, πρέπει να μπορούμε να προσθέσουμε σε αυτό την τιμή 1, μ άλλα λόγια να προσθέσουμε το ψηφίο 1 στο λιγότερο σημαντικό ψηφίο αυτού, όπου αυτό απαντάται. Στο παραπάνω σχήμα, το λιγότερο σημαντικό ψηφίο του Α άρα και του Α, απαντάται ως είσοδος σε διάφορους πλήρεις αθροιστές (Π) ή ημιαθροιστές (Η). Στη δεύτερη περίπτωση, η σύνδεση του σήματος αφαίρεση/πρόσθεση είναι εύκολη, μια που ο ημιαθροιστής απλά επεκτείνεται σε πλήρη αθροιστή, με σύνδεση του σήματος αυτού στην τρίτη είσοδο που αντιστοιχεί στο κρατούμενο εισόδου. Στην πρώτη περίπτωση όμως, τέτοια σύνδεση είναι αδύνατη, μια που η τρίτη είσοδος ήδη χρησιμοποιείται! Μια πιθανή λύση στο παραπάνω πρόβλημα είναι η προσθήκη μιας ακόμα λέξης εισόδου στη διάταξη, η οποία να αντιστοιχεί σε αυτές τις συνδέσεις, και η οποία να προστίθεται στο πρώτο επίπεδο διατήρησης κρατουμένου. Κάτι τέτοιο είναι εφικτό, μια που το ψηφίο A 0 δεν εμφανίζεται ποτέ στην ίδια σημαντικότητα της διάταξης. Έτσι, το λιγότερο σημαντικό ψηφίο της λέξης θα έχει τιμή 1, αν ο έλεγχος του ζεύγους ψηφίων (Β 0, Β -1 ) δίνει πράξη πρόσθεσης του -Α, δηλαδή αφαίρεσης, διαφορετικά θα έχει τιμή 0, το επόμενο ψηφίο θα έχει τιμή 1, αν ο έλεγχος του ζεύγους ψηφίων (Β 1, Β 0 ) δίνει πράξη αφαίρεσης, διαφορετικά θα έχει τιμή 0, κοκ. Επειδή για αριθμούς μεγέθους 8 bit ο έλεγχος γίνεται για 8 ζεύγη, η λέξη που θέλουμε θα είναι μεγέθους 8 bit. Φυσικά, η λέξη αυτή θα πρέπει να θεωρηθεί μη προσημασμένη. Για την υλοποίηση του βελτιωμένου αλγόριθμου Booth, ισχύουν παρόμοια με τα παραπάνω όσο αφορά την υλοποίηση του αντίθετου. Εφόσον κάθε βήμα προχωράει κατά 2 bit, το βοηθητικό ψηφίο που θα προστίθεται, θα αντιστοιχεί μόνο στις άρτιες σημαντικότητες της διάταξης, αλλά θα καλύπτει πάλι όλο το εύρος του πολλαπλασιαστή. Στη μη επαναληπτική υλοποίηση τόσο του βασικού όσο και του βελτιωμένου αλγόριθμου Booth, όλα τα σήματα ελέγχου παράγονται ταυτόχρονα από πολλαπλά αντίγραφα του κυκλώματος που εξετάζει το ζεύγος ή την τριάδα ψηφίων, με κάθε αντίγραφο να τροφοδοτείται από τα κατάλληλα ψηφία του πολλαπλασιαστή. Μια διάταξη των 8 bit που υλοποιεί το βελτιωμένο αλγόριθμο Booth μη επαναληπτικά σύμφωνα με τα παραπάνω δίνεται στην επόμενη σελίδα. Προσέξτε ότι κάθε νέος αριθμός που προστίθεται είναι μετατοπισμένος κατά δύο ψηφία, ενώ ο αριθμός 2Α παράγεται με μετατόπιση κατά ένα ακόμα ψηφίο. Γι αυτό και κάθε επίπεδο διατήρησης κρατουμένου περιέχει 9 στοιχειώδεις αθροιστές. Το Ε είναι το κύκλωμα

επιλογής εισόδου, με την επιλογή να καθορίζεται από τις γραμμές ελέγχου Σ 0, Σ 1, Σ 2 και Σ 3. Τα πρόσθετα ψηφία υπολογισμού του αντιθέτου είναι τα Ψ 0, Ψ 1, Ψ 2 και Ψ 3. Πιο συγκεκριμένα, το κύκλωμα Ε πρέπει με βάση τις γραμμές ελέγχου να επιλέγει μεταξύ των δύο εισόδων του, των συμπληρωματικών τους και του 0. Κάθε γραμμή ελέγχου πρέπει 19

20 να είναι εύρους τριών ψηφίων, ώστε να καλύπτει τις 5 εναλλακτικές τιμές, και μπορεί να περιλαμβάνει τα σήματα πράξη/όχι πράξη και αφαίρεση/πρόσθεση, καθώς και ένα σήμα διπλάσιο/απλό για την επιλογή της κατάλληλης από τις δύο εισόδους, με τιμή 1 για επιλογή διπλασίου δηλαδή του ψηφίου μικρότερης σημαντικότητας ώστε να επιτευχθεί ολίσθηση κατά μία θέση και 0 για επιλογή απλού πολλαπλασιαστέου. Με αυτά τα σήματα ελέγχου, μια υλοποίηση του Ε μπορεί να είναι η παρακάτω: MUX διπλάσιο/απλό αφαίρεση/πρόσθεση πράξη/όχι πράξη E Για κάθε επίπεδο διατήρησης κρατουμένου, η γραμμή ελέγχου Σ i θα περιγράφεται από τον πίνακα: Β 2i+1 Β 2i Β 2i-1 διπλάσιο/απλό i πράξη/όχι πράξη i αφαίρεση/πρόσθεση i 0 0 0 x 0 x 0 0 1 0 1 0 0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 0 0 1 1 1 1 1 x 0 x για i = 0,1,2,3, όπως προκύπτει από προηγούμενη άσκηση, οπότε τα αντίστοιχα σήματα θα παράγονται από ένα συνδυαστικό κύκλωμα που υλοποιεί τις λογικές συναρτήσεις: διπλάσιο/απλό 0 = Β 1 Β 0 αφαίρεση/πρόσθεση 0 = Β 1 Β 0 + Β 1 Β 0 πράξη/όχι πράξη 0 = (Β 1 Β 0 ) διπλάσιο/απλό 1 = Β 3 Β 2 Β 1 + Β 3 Β 2 Β 1 αφαίρεση/πρόσθεση 1 = Β 3 Β 2 Β 1 + Β 3 Β 2 Β 1 + Β 3 Β 2 Β 1 πράξη/όχι πράξη 1 = (Β 3 Β 2 Β 1 + Β 3 Β 2 Β 1 ) διπλάσιο/απλό 2 = Β 5 Β 4 Β 3 + Β 5 Β 4 Β 3 αφαίρεση/πρόσθεση 2 = Β 5 Β 4 Β 3 + Β 5 Β 4 Β 3 + Β 5 Β 4 Β 3 πράξη/όχι πράξη 2 = (Β 5 Β 4 Β 3 + Β 5 Β 4 Β 3 ) διπλάσιο/απλό 3 = Β 7 Β 6 Β 5 + Β 7 Β 6 Β 5 αφαίρεση/πρόσθεση 3 = Β 7 Β 6 Β 5 + Β 7 Β 6 Β 5 + Β 7 Β 6 Β 5 πράξη/όχι πράξη 3 = (Β 7 Β 6 Β 5 + Β 7 Β 6 Β 5 ) δεδομένου ότι Β -1 0. Τα ψηφία Ψ 0, Ψ 1, Ψ 2 και Ψ 3 θα τροφοδοτούνται από τα σήματα αφαίρεση/πρόσθεση 0, αφαίρεση/πρόσθεση 1, αφαίρεση/πρόσθεση 2 και αφαίρεση/πρόσθεση 3, αντίστοιχα. Για τους αριθμούς που μας δίνονται, Α 01010011 (2) = 83 (10) και Β 11010010 (2) = -46 (10), η παραπάνω διάταξη θα συμπεριφερθεί όπως περιγράφεται στο σχήμα της επόμενης σελίδας, όπου φαίνονται οι τιμές που προκύπτουν από όλα τα κυκλώματα Ε, καθώς και από όλους τους αθροιστές, συμπεριλαμβανομένου του αθροιστή πρόβλεψης κρατουμένου. Τα σήματα των γραμμών Σ 0, Σ 1, Σ 2 και Σ 3 θα έχουν τιμές:

21 1 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 1 1 0 διπλάσιο/απλό 0 = 1 αφαίρεση/πρόσθεση 0 = 1 πράξη/όχι πράξη 0 = 1 διπλάσιο/απλό 1 = 0 αφαίρεση/πρόσθεση 1 = 0 πράξη/όχι πράξη 1 = 1 διπλάσιο/απλό 2 = 0 αφαίρεση/πρόσθεση 2 = 0 πράξη/όχι πράξη 2 = 1 διπλάσιο/απλό 3 = 0 αφαίρεση/πρόσθεση 3 = 1 πράξη/όχι πράξη 3 = 1 οπότε και Ψ 0 = 1, Ψ 1 = Ψ 2 = 0 και Ψ 3 = 1. Το αποτέλεσμα της πράξης είναι ο αριθμός Γ 1111000100010110 (2) = -3818 (10). Άσκηση 7: Δείξτε τα βήματα του αλγόριθμου διαίρεσης ακεραίων όταν διαιρείτε τους δυαδικούς αριθμούς 00010011(διαιρετέος) και 0010 (διαιρέτης). Επαληθεύστε το αποτέλεσμα που πήρατε. Απάντηση: Το υλικό που χρησιμοποιείται για την υλοποίηση του επαναληπτικού αλγόριθμου διαίρεσης ακεραίων δίνεται στην επόμενη σελίδα. Ο καταχωρητής Υπόλοιπο/Πηλίκο περιέχει δύο α- ριθμούς που τελικά θα είναι τα δύο αποτελέσματα της διαίρεσης, το πηλίκο και το υπόλοιπο. Αρχικά, πριν από οποιαδήποτε πράξη μεταξύ διαιρετέου και διαιρέτη, το μερικό υπόλοιπο της πράξης είναι ίσο με το διαιρετέο. Διαδοχικές αφαιρέσεις του διαιρέτη μας δίνουν το υπό-