Πανεπιστήμιο Κρήτης
ΗΥ-225
Τμήμα Επιστήμης Υπολογιστών
Άνοιξη 2000
ΗΥ-225: Οργάνωση Υπολογιστών
2000-03-17 - βδομάδα 7
Δ. Πνευματικάτος
φυλλάδιο 7

4η Σειρά Ασκήσεων (Πρώτο Μέρος της Εργασίας)

Προθεσμία έως Παρασκευή 31 Μαρτίου (βδομάδα 9)

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

4.1: Αλλάξτε το datapath του επεξεργαστή που είδαμε στο μάθημα γιά την εκτέλεση εντολών σε πολλαπλούς κύκλους ρολογιού (φυλλάδιο 8, σελίδες 7-8), ούτως ώστε:

(i) η Register File η ALU και η μνήμη να βάζουν τα αποτελέσματά τους σε καταχωρητές (δύο καταχωρητές Α και Β η Register File, Instruction Register και Data Register η μνήμη, και ALUOut η ALU), και

(ii) να υλοποιούνται όλες οι εντολές που είδαμε στο κεφάλαιο 3, δηλαδή jr, add, sub, and, or, slt, j, jal, beq, bne, addi, slti, lui, lw, sw, και

(iii) να υλοποιούνται οι εξής εξαιρέσεις: λανθασμένης ευθυγράμμισης κατά την προσπέλαση μνήμης εντολών, λανθασμένης ευθυγράμμισης κατά την προσπέλαση μνήμης δεδομένων (μέσω lw και sw), και υπερχείλιση πράξης ALU. (Υπόδειξη: μιά πρόσθεση έχει προξενήσει υπερχείλιση εάν οι δύο προσθετέοι είναι ομόσημοι και το αποτέλεσμα έχει το αντίθετο πρόσημο).

Δώστε κατάλληλα μνημονικά ονόματα σε όλα τα σήματα δεδομένων και ελέγχου (τα ονόματα αυτά θα είναι πολύ χρήσιμα αργότερα, κατά την προσομοίωση).  Βεβαιωθήτε οτι το datapath μπορεί να εκτελέσει όλες τις εντολές, και τις εντολές j, jr, jal στον χρόνο που περιγράφεται στην 4.2. Σχεδιάστε την απάντησή σας καθαρά, σε χαρτί.

4.2: Σχεδιάστε σε χαρτί το διάγραμμα καταστάσεων του ελέγχου γιά τον επεξεργαστή της άσκησης 4.1. Οι εντολές j και jr θα εκτελούνται σε 2 κύκλους ρολογιού μόνο και η jal σε 3. Στο διάγραμμα καταστάσεων να φαίνονται μόνο η αρίθμηση των καταστάσεων, οι μεταβάσεις καταστάσεων, και "μνημονικά/επιγραμματικά" οι συνθήκες υπό τις οποίες γίνονται αυτές (δεν θα φαίνονται τα σήματα ελέγχου σε κάθε κατάσταση).

Κάντε έναν κατάλογο με τις εργασίες που πρέπει να γίνονται σε κάθε κατάσταση της FSM ελέγχου: γιά την κάθε κατάσταση, γράψτε τις εξισώσεις μεταφοράς καταχωρητών που περιγράφουν τις εργασίες αυτές, και δώστε ένα κατάλογο με τα σήματα ελέγχου που πρέπει να "ενεργοποιούνται" προκειμένου να συμβούν οι μεταφορές αυτές. Χρησιμοποιείστε σαν όνομα κάθε καταχωρητή το όνομα των δεδομένων εξόδου του, σύμφωνα με το διάγραμμά σας της άσκησης 4.1. Γιά σήματα ελέγχου που απλά επιλέγουν μεταξύ "ισότιμων" εργασιών, ορίστε μιά τιμή σαν "default", και καταγράψτε τα μόνο στις καταστάσεις όπου αυτά πρέπει να παίρνουν διαφορετική τιμή. Σημειώστε επίσης τα σήματα που διαφοροποιούν μεταξύ τους τις "αδελφές" εντολές (π.χ. add/sub/and/or). Δείτε και την άσκ. 4.3 σχετικά με την αδρανοποίηση εγγραφών κατά τις εξαιρέσεις.

Επίσης, κάντε έναν κατάλογο με τις συνθήκες μετάβασης καταστάσεων: γιά την κάθε κατάσταση, γράψτε ποιές είναι οι πιθανές επόμενες καταστάσεις και υπό ποιά συνθήκη μεταβαίνουμε σε καθεμιά τους. Εκφράστε τις συνθήκες σαν λογικές εξισώσεις σε ψευδοκώδικα C, χρησιμοποιόντας τα ονόματα σημάτων και καταχωρητών της άσκησης 4.1 (π.χ. (OPcode=="lw")&&((ALUout&03)==0), κλπ).

4.3: Σχεδιάστε το διάγραμμα block της FSM ελέγχου. Θα φαίνονται μόνον οι είσοδοι και οι έξοδοι των καταχωρητών και των συνδυαστικών κυκλωμάτων, και όχι οι λογικές πύλες μέσα σε αυτά. Κάντε ένα λεπτομερή κατάλογο με όλα τα σήματα εισόδου και εξόδου. Φυσικά, πρέπει στον κατάλογο αυτό να περιλαμβάνονται και όλα τα σήματα ελέγχου της άσκησης 4.1.

Η FSM θα είναι του τύπου Moore, με το σύστημα σταθεροποίησης των σημάτων ελέγχου νωρίς στη διάρκεια του κύκλου ρολογιού, όπως στο φυλλάδιο 8, σελίδα 8, κάτω-αριστερά, δεξιά εκδοχή, με εξαίρεση τα σήματα ελέγχου των j και jr που πρέπει να οδηγούνται κατάλληλα στη διάρκεια του 2ου κύκλου εκτέλεσης. Επίσης, σε περίπτωση εξαίρεσης αριθμητικής υπερχείλισης πρέπει να αδρανοποιείται η εγγραφή στο αρχείο καταχωρητών, και σε περίπτωση εξαίρεσης λανθασμένης ευθυγράμμισης πρέπει να αδρανοποιείται η εγγραφή στη μνήμη δεδομένων σε περίπτωση sw, και φυσικά να μη γίνεται ούτε η εγγραφή στον rd σε περίπτωση lw.

Γιά διαφορετικές εντολές που τις υλοποιείτε όλες με την ίδια κατάσταση της FSM (π.χ. add, sub, and, or, slt, addi, slti), δείξτε πώς διαφοροποιούνται τα σχετικά σήματα ελέγχου. Μην βάλετε όλο το πεδίο funct του IR σαν είσοδο στη συνδυαστική λογική της FSM - προαποκωδικοποιείστε το κατάλληλα, και δώστε μόνο λίγα σχετικά σήματα σαν είσοδο στην FSM, προκειμένου να απλοποιηθεί η υλοποίηση της τελευταίας.