Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση Κεφάλαιο 3 Αριθµητική για υπολογιστές Ασκήσεις Η αρίθµηση των ασκήσεων είναι από την 4 η έκδοση του «Οργάνωση και Σχεδίαση Υπολογιστών: η διασύνδεση υλικού και λογισµικού», D.A.Patterson, J.L.Hennessy
Άσκηση 3.6 Σε αυτή την άσκηση, θα δούµε µερικούς άλλους τρόπους για τη βελτίωση της απόδοσης του πολλαπλασιασµού, µε βάση κυρίως την εκτέλεση περισσότερων ολισθήσεων και λιγότερων αριθµητικών πράξεων. Ο επόµενος πίνακας περιέχει ζεύγη δεκαεξαδικών αριθµών. A B α. 24 c9 β. 41 18 Ασκήσεις Κεφάλαιο 3 Αριθµητική για υπολογιστές 2
Άσκηση 3.6 (συνέχεια) 3.6.1 Μια πιθανή βελτίωση της απόδοσης είναι η εκτέλεση µιας ολίσθησης και πρόσθεσης (shift and add) αντί για έναν πραγµατικό πολλαπλασιασµό. Αφού, για παράδειγµα, το 9 6 µπορεί να γραφεί (2 2 2 + 1) 6, µπορούµε να υπολογίσουµε το 9 6 ολισθαίνοντας το 6 τρεις φορές αριστερά και µετά προσθέτοντας το 6 σε αυτό το αποτέλεσµα. είξτε τον καλύτερο τρόπο υπολογισµού του A B µε ολισθήσεις και προσθέσεις/αφαιρέσεις. Υποθέστε ότι οι A και B είναι απρόσηµοι ακέραιοι των 8 bit. Ασκήσεις Κεφάλαιο 3 Αριθµητική για υπολογιστές 3
Άσκηση 3.6 (συνέχεια) A B α. 24 C9 0x24 0xC9 = 0x1C44. Είναι: 0x24 = 36 = 32 + 4, άρα µπορούµε να ολισθήσουµε το 0xC9 κατά 5 θέσεις αριστερά (2 5 =32), και µετά να προσθέσουµε στη τιµή αυτή (0x1920) το 0xC9 ολισθηµένη αριστερά κατά 2 θέσεις (0x324) = 0x1C44. Σύνολο: 2 ολισθήσεις και 1 πρόσθεση. β. 41 18 0x41 0x18 = 0x618 Είναι: 0x41 = 65 = 64 + 1. Ο καλύτερος τρόπος είναι να ολισθήσει το 0x18 κατά 6 θέσεις αριστερά (2 6 =64), και µετά να προστεθεί το 0x18. Σύνολο: 1 ολίσθηση και 1 πρόσθεση. Ασκήσεις Κεφάλαιο 3 Αριθµητική για υπολογιστές 4
Άσκηση 3.6 (συνέχεια) 3.6.2 είξτε τον καλύτερο τρόπο υπολογισµού του A B µε ολισθήσεις και προσθέσεις, αν οι A και B είναι προσηµασµένοι ακέραιοι των 8 bit αποθηκευµένοι σε µορφή προσήµου και µεγέθους (sign and magnitude). A B α. 24 C9 β. 41 18 0x24 0xC9 = 0x24 ( 0x49) = 0xA44 = 8A44 Είναι: 0x24 = 36 = 32 + 4, άρα ολισθαίνουµε το 0x49 κατά 5 θέσεις αριστερά (0x920), µετά προσθέτουµε το 0x49 ολισθηµένο κατά 2 θέσεις αριστερά (0x124) = 0xA44. Επειδή ο ένας από τους αριθµούς είναι αρνητικός το αποτέλεσµα πρέπει να είναι αρνητικό. Σύνολο: 2 ολισθήσεις, 1 πρόσθεση, 2 αντιστροφές 0x41 0x18 = 0x618 Είναι: 0x41 = 65 = 64 + 1. Ο καλύτερος τρόπος είναι να ολισθήσει το 0x18 κατά 6 θέσεις αριστερά και µετά να του προστεθεί το add 0x18. Σύνολο: 1 ολίσθηση και 1 πρόσθεση Ασκήσεις Κεφάλαιο 3 Αριθµητική για υπολογιστές 5
Άσκηση 3.6 (συνέχεια) 3.6.3 Γράψτε ένα πρόγραµµα συµβολικής γλώσσας MIPS που εκτελεί πολλαπλασιασµό προσηµασµένων ακεραίων µε ολισθήσεις και προσθέσεις, όπως περιγράφεται στο Πρόβληµα 3.6.2. οκιµάστε να το λύσετε µε τη βοήθεια του Spim για επαλήθευση. Ασκήσεις Κεφάλαιο 3 Αριθµητική για υπολογιστές 6
Άσκηση 3.10 Σε µια αρχιτεκτονική Von Neumann, οι οµάδες bit δεν έχουν κάποια εγγενή σηµασία από µόνες τους. Αυτό που αντιπροσωπεύει µια σειρά bit εξαρτάται πλήρως από τον τρόπο χρήσης της. Ο παρακάτω πίνακας δείχνει σειρές bit εκφρασµένες σε δεκαεξαδική σηµειογραφία. α. 24A60004 hex β. AFBF0000 hex Ασκήσεις Κεφάλαιο 3 Αριθµητική για υπολογιστές 7
Άσκηση 3.10 (συνέχεια) 3.10.1 Ποιο δεκαδικό αριθµό αντιπροσωπεύει η σειρά των bit αν είναι ακέραιος σε συµπλήρωµα ως προς δύο; Αν είναι απρόσηµος ακέραιος; Προσηµασµένος σε Απρόσηµος συµπλήρωµα ως προς 2 α. 24A60004 hex 614858756 614858756 β. AFBF0000 hex 1346437120 2948530176 Ασκήσεις Κεφάλαιο 3 Αριθµητική για υπολογιστές 8
Άσκηση 3.10 (συνέχεια) 3.10.2 Αν αυτή η σειρά bit τοποθετηθεί στον καταχωρητή εντολής (Instruction Register), ποια εντολή MIPS θα εκτελεστεί; Εντολή MIPS α. 24A60004 hex addiu $6, $5, 4 β. AFBF0000 hex sw $31, 9($29) Ασκήσεις Κεφάλαιο 3 Αριθµητική για υπολογιστές 9
Άσκηση 3.10 (συνέχεια) 3.10.3 Ποιο δεκαδικό αριθµό αντιπροσωπεύει η σειρά bit αν είναι αριθµός κινητής υποδιαστολής; Χρησιµοποιήστε το πρότυπο IEEE 754. Αριθµός κινητής υποδιαστολής (απλής ακρίβειας) α. 24A60004 hex δυαδικά 0010 0100 1010 0110 0000 0000 0000 0100 κατά ΙΕΕΕ 754 0 01001001 01001100000000000000100 πρόσηµο θετικό 0 εκθέτης 01001001 = 73 127 = 54 κλάσµα 01001100000000000000100 = 2-2 + 2-5 + 2-6 + 2-21 και µε το 1. που υπονοείται, τελικά ο αριθµός είναι ο +1,296875476837158203125 x 2-54 β. AFBF0000 hex οµοίως... Ασκήσεις Κεφάλαιο 3 Αριθµητική για υπολογιστές 10
Άσκηση 3.10 (συνέχεια) Ο παρακάτω πίνακας δείχνει δεκαδικούς αριθµούς. α. 1609,5 β. 938,8125 3.10.4 Γράψτε τη δυαδική αναπαράσταση του δεκαδικού αριθµού, στη µορφή απλής ακρίβειας του IEEE 754. 3.10.5 Γράψτε τη δυαδική αναπαράσταση του δεκαδικού αριθµού, στη µορφή διπλής ακρίβειας του IEEE 754. 3.10.6 Γράψτε τη δυαδική αναπαράσταση του δεκαδικού αριθµού, µε την παραδοχή ότι αποθηκεύεται στη µορφή IBM απλής ακρίβειας (βάση 16, αντί για βάση 2, µε 7 bit για τον εκθέτη). Ασκήσεις Κεφάλαιο 3 Αριθµητική για υπολογιστές 11