ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών (ΗΜΜΥ) Δείγμα Τελικής Εξέτασης στο ΗΜΥ213 Διδάσκοντας: Γιώργος Ζάγγουλος Οδηγίες Διαβάστε Προσεκτικά! Αυτή η εξέταση γίνεται με κλειστά βιβλία και σημειώσεις, και πρέπει να εκτελεστεί ανεξάρτητα από τον κάθε φοιτητή/φοιτήτρια στη διάρκεια των 150 λεπτών της εξέτασης. Ο κάθε φοιτητής/φοιτήτρια συμφωνεί ότι όλη η εργασία που παρουσιάζει σε αυτή τη γραπτή εξέταση είναι δική του/της. Κρούσματα αντιγραφής θα βαθμολογηθούν αυτόματα με 0. Κατά την διάρκεια της εξέτασης δεν επιτρέπεται η ομιλία, ούτε και η υποβολή αποριών. Τα κινητά τηλέφωνα καθώς και άλλες ηλεκτρονικές συσκευές όπως smart watches/tablets και άλλα, πρέπει να είναι απενεργοποιημένα και να παραδοθούν στους επιτηρητές πριν την εξέταση. Απαγορεύεται να σηκωθείτε από τη θέση σας προτού παραδώσετε το γραπτό σας, εκτός και αν έχετε βεβαίωση από γιατρό στην οποία να αναφέρεται ότι χρειάζεστε ειδικές διευκολύνσεις κατά τη διάρκεια της εξέτασης. Μόνο άτομα που κάθονται σε ακριανές θέσεις, μπορούν να αποχωρήσουν πριν το τέλος της εξέτασης. Αποφύγετε την όποια ενόχληση προς τους υπόλοιπους εξεταζόμενους. Επιτρέπεται να έχετε μαζί σας ΜΟΝΟ μολύβια, στυλό, διορθωτικό και χάρακα. Η χρήση υπολογιστικής μηχανής απαγορεύεται. Βεβαιωθείτε ότι κάτω από το θρανίο σας ΔΕΝ υπάρχει οτιδήποτε. Διαβάστε τις ερωτήσεις προσεκτικά. Εάν κάτι εμφανίζεται αμφίβολο/διφορούμενο έτσι ώστε να πρέπει να λάβετε υπόψη συγκεκριμένες προϋποθέσεις, ΓΡΑΨΕΤΕ τις ξεκάθαρα. ΜΗΝ δίνετε μόνο την απάντηση στα ερωτήματα. Απαιτείται να δείχνετε όλες τις πράξεις/ σκέψεις και αποφάσεις που σας οδήγησαν στην απάντηση. Απαγορεύεται να αφαιρέσετε οποιαδήποτε σελίδα από το γραπτό ( ούτε προσωρινά ) Δηλώνω υπεύθυνα ότι έχω κατανοήσει και συμφωνώ στην τήρηση ΟΛΩΝ των πιο πάνω κανόνων/παρατηρήσεων. 1 Υπογραφή: Απαντήστε όλες τις πιο κάτω ερωτήσεις (σύμφωνα με τις προδιαγραφές που τέθηκαν στον σχεδιασμό του Μικροεπεξεργαστή 16 μπιτς). Πρέπει να δείχνετε όλη την πορεία επίλυσης της κάθε άσκησης και ΟΧΙ μόνο το αποτέλεσμα, εκτός και αν στην άσκηση γράφει ότι δεν το ζητά. Μια απάντηση θα θεωρείται ορθή μόνο εάν βασίζεται στον τρόπο υλοποίησης που περιγράψαμε στο ΗΜΥ213, ή σε δικό σας τρόπο υλοποίησης/σκέψης ο οποίος μπορεί να εφαρμοστεί επιτυχώς. Καλή Επιτυχία!!!
1. Αναφέρετε ποιοι είναι οι ειδικοί καταχωρητές που περιλαμβάνονται στο Αρχείο Καταχωρητών και ποια η χρήση του καθενός; (5 μονάδες) 2. Αναφέρετε την τιμή (στο δυαδικό) που πρέπει να έχει το κάθε σήμα εισόδου του αρχείου καταχωρητών για εγγραφή της τιμής 35 στον καταχωρητή $6 (5 μονάδες) 3. Πόσα bits δεδομένων (όχι εντολών) μπορούν να αποθηκευτούν στη μνήμη RAM του Μικροεπεξεργαστή σας και πόσα bits χρειάζονται για την διευθυνσιοδότηση της μνήμης; (8 μονάδες) 4. Φτιάξτε τον πίνακα αληθείας του πλήρη αθροιστή, βρέστε τις εξισώσεις και σχεδιάστε μόνο με λογικές πύλες το τμήμα της ALU-1bit το οποίο πραγματοποιεί πρόσθεση, αφαίρεση, or και and. (8 μονάδες) 5. Εξηγήστε λεπτομερώς πως θα πραγματοποιηθεί η αφαίρεση στην ALU-16 bits. Στην απάντησή σας αναφερθείτε στα σήματα ελέγχου των 2 πολυπλεκτών και στις εισόδους της κάθε ALU-1bit. (8 μονάδες) 6. Δείξτε στο δυαδικό βήμα προς βήμα πως θα εκτελεστεί η πρόσθεση των αριθμών 21 και -12. Στην απάντησή σας να αναφέρετε ποιο θα είναι το αποτέλεσμα (Cout και Sum) και να δείξετε πως φτάσατε σε αυτό (στο δυαδικό σύστημα) (8 μονάδες) 7. Εξηγήστε ποια σήματα συνδέονται στις εισόδους των 2 πολυπλεκτών των οποίων οι έξοδοι είναι συνδεδεμένες στις εισόδους A και Β της ολοκληρωμένης ALU-16bits. Αναφέρετε επίσης πότε χρησιμοποιείται το καθένα από αυτά (χωρίς να αναφερθείτε στα σήματα ελέγχου τους). (6 μονάδες) 8. Ο καταχωρητής προγράμματος (PC) παίρνει τη νέα του τιμή πάντοτε μέσω ενός πολυπλέκτη ο οποίος ελέγχεται από το PC_source. Εξηγήστε λεπτομερώς πότε και πως ο PC παίρνει τη νέα του τιμή για όλες τις περιπτώσεις εκτός της περίπτωσης PC+1 η οποία δίνεται πιο κάτω ως παράδειγμα για Βοήθεια! PC+1: Για την εκτέλεση της επόμενης (σε σειρά) εντολής, ο PC παίρνει την τιμή PC+1 η οποία υπολογίζεται στον πρώτο κύκλο εκτέλεσης της εντολής από την ALU-16bits στην οποία επιλέγεται ως είσοδος Α η παρούσα τιμή του PC και ως Β η τιμή 1. Το αποτέλεσμα της ALU θα περάσει από τον πολυπλέκτη PC_source και θα αποθηκευτεί στον PC όταν έρθει αλλαγή στο ρολόι από 0 σε 1. Η νέα τιμή του PC δεν θα αλλάξει μέχρι την προσκόμιση της επόμενης εντολής). (8 μονάδες) 9. Δώστε όλα τα αποτελέσματα (ενδιάμεσα και τελικό) της ALU 16bits που θα εμφανιστούν κατά την εκτέλεση της πιο κάτω εντολής και εξηγήστε γιατί; Η εντολή είναι: addi $7, $6, 14 και είναι αποθηκευμένη στη διεύθυνση 0B8 της RAM. Τα αρχικά περιεχόμενα του $6=6Β39 και του $7=78Β6. (6 μονάδες) 10. Εξηγήστε με κάθε λεπτομέρεια τι θα συμβεί σε κάθε clock cycle μέχρι την ολοκλήρωση των πιο κάτω εντολών: (α) bgt $4, $5, 12 (β) jr $r2 (8 μονάδες) 11. Συμπληρώστε το περιεχόμενο του αρχείου αρχικοποίησης της RAM (.mif file) έτσι ώστε ο μικροεπεξεργαστής να αποθηκεύει αρχικά στη διεύθυνση μνήμης 0x40B τον αριθμό 0x1004 και στη συνέχεια να τον εμφανίζει στην έξοδο με την εντολή halt $r7. (Δείξτε αρχικά τις εντολές assembly και έπειτα μεταφράστε τις στο δεκαεξαδικό σύστημα.) Περιορισμός: Θεωρείστε ότι οι πρώτες 100 διευθύνσεις της στατικής μνήμης περιέχουν μόνο μηδενικά. (12 μονάδες) 12. Σχεδιάστε το μπλοκ διάγραμμα του ολισθητή (όχι το σχεδιασμό του με τις πύλες) και ονομάστε τα σήματα εισόδου και εξόδου τoυ κάθε μπλοκ που έχετε σχεδιάσει. Σε σχέση με το opcode και το 2
shift_amount, αναφέρετε και τα απαιτούμενα σήματα ελέγχου των πολυπλεκτών; Δείξτε ξεκάθαρα όλα τα σήματα εισόδου και εξόδου του ολισθητή για τις 2 εντολές που πραγματοποιεί. Βοήθεια: απαιτούνται 3 μπλόκς: o ολισθητής και 2 πολυπλέκτες). (6 μονάδες) 13. Δείξτε τον πίνακα αληθείας και στη συνέχεια σχεδιάστε ένα αποκωδικοποιητή 3 σε 8 με λογικές πύλες και εξηγήστε σε τι χρησιμεύει ο αποκωδικοποιητής 3 σε 8 που βρίσκεται στο αρχείο καταχωρητών. Τόσο στον πίνακα, όσο και στο σχεδιασμό σας πρέπει να περιλαμβάνεται και σήμα ενεργοποίησης (enable) θετικής λογικής. Εξηγείστε που συνδέεται η κάθε είσοδος και έξοδος αυτού του αποκωδικοποιητή. (6 μονάδες) 14. Σχεδιάστε ένα πολυπλέκτη 4 σε 1 των 2 μπιτς (2-bit MUX 4x1) και στη συνέχεια να αναφέρετε γιατί απαιτείται ο πολυπλέκτης πριν από την είσοδο «address» της μνήμης RAM. (6 μονάδες) Πίνακας 2: Σύνολο Εντολών Μικροεπεξεργαστή Εντολή opcode Τύπος Χρήση Λειτουργία add 0001 R add $rd $rs $rt $rd = $rs + $rt addi 0011 I add $rt $rs x $rt = $rs + x (x: immediate value) sub 1001 R sub $rd $rs $rt $rd = $rs - $rt and 0101 R and $rd $rs $rt $rd = $rs AND $rt or 1101 R or $rd $rs $rt $rd = $rs OR $rt srl 0111 R srl $rd $rs y $rd = $rs >> y (y: shift amount) sll 1011 R sll $rd $rs y $rd = $rs << y (y: shift amount) lw 0100 I lw $rt Α($rs) $rt = MEM [$rs+α] sw 1000 I sw $rt Α($rs) MEM [$rs+α] = $rt beq 1100 I beq $rs $rt z If ($rs = $rt), then PC = PC + 1 + z bgt 0010 I bgt $rs $rt z If ($rs > $rt), then PC = PC + 1 + z J 1010 J j L PC = L (τα 4 MSbits μένουν τα ίδια) jr 1110 R jr $rs PC = $rs jal 0110 J jal L $ra = PC + 1; PC = L halt 1111 R halt $rs Output = $rs; halt Πίνακας 3: Τύποι Εντολών R-type: Opcode (4) $rs (3) $rt (3) $rd (3) Shift amount (3) I-type: Opcode (4) $rs (3) $rt (3) Immediate (6) J-type: Opcode (4) Address (12 Least Significant Bits) 3
.. 4
.. 5
... 6
.. 7
.. 8
.. 9
10
11