ΗΥ-225: Οργάνωση Υπολογιστών
Άνοιξη 2005
Τμ. Επ. Υπολογιστών
© Πανεπιστήμιο Κρήτης

Σειρά Ασκήσεων 13:
Υλοποίηση Εξαιρέσεων και Τελικές Διορθώσεις

Προθεσμία έως Κυριακή 29 Μαΐου 2005, ώρα 23:59 (βδομάδα 12-13)
[Up - Table of Contents]
[Prev - 12. Other Instructions]
[printer version - PDF]
[14. Processor Performance - Next]

13.1   Εξαιρέσεις Μνήμης:

Εκτός από τις εξαιρέσεις παράνομης εντολής (illegal opcode) --που έχει και ο επεξεργαστής του βιβλίου (παράγραφος 5.6, σελίδες 410-416) και που θα υλοποιήσουμε και εμείς-- και εκτός από τις εξαιρέσεις αριθμητικής υπερχείλισης --που δεν θα υλοποιήσουμε εμείς-- σε αυτή τη σειρά ασκήσεων θα υλοποιήσετε και Εξαιρέσεις Προσπελάσεων Μνήμης:

Άσκηση 13.2:   Προσθήκη Εξαιρέσεων (Exceptions)

Προσθέστε στο datapath και στον έλεγχο όσα χρειάζονται γιά να υλοποιεί ο επεξεργαστής σας Εξαιρέσεις Παράνομης Εντολής και Εξαιρέσεις Μνήμης. Η ιδέα είναι η ίδια με ό,τι περιγράφει το βιβλίο στην παράγραφο 5.6 (σελίδες 410-416), αλλά εμείς θα έχουμε διαφορετικές αιτίες εξαιρέσεων, και μία μόνο πρόσθετη κατάσταση ελέγχου, την "exception_st", γιά να τις υλοποιήσουμε. Όπως και στο βιβλίο, πάντως, θα προσθέσετε δύο νέους (ακμοπυροδότητους) καταχωρητές: "epc" (Exception PC), των 32 bits, γιά να κρατά τη διεύθυνση της "κακιάς" εντολής (συν 4), και "cause" (αιτία), επίσης των 32 bits, γιά να κρατά έναν κώδικα που υποδεικνύει την αιτία της εξαίρεσης. Περιγράψτε τον "epc" σαν RegLd (όπως και τον pc), ενώ τον "cause" μπορείτε να τον περιγράψτε σαν reg --όπως και τον currState. Οι αιτίες εξαιρέσεων και οι αντίστοιχες δράσεις θα είναι:

Άσκηση 13.3:   Πλήρες Debugging

Ελέγξτε εξονυχιστικά τον επεξεργαστή που σχεδιάσατε, και διορθώστε τα λάθη μέχρι ότου αυτός εκτελεί επιτυχώς τα μεγάλα προγράμματα που θα βρείτε στην περιοχή "~hy225/verilog/test/test13/". Υπολογίστε με τη βοήθεια του SignalScan πόση είναι η ελάχιστη δυνατή περίοδος του ρολογιού σας, και αλλάξτε το top-level ώστε να τρέχει ο επεξεργαστής σας με αυτό το γρηγορότερο δυνατό ρολόϊ. Πόσα MHz καταφέρατε να "πιάσετε";

Παραδώστε, όπως και στις προηγούμενες ασκήσεις, τον κώδικά σας, "datapath13.v" και "control13.v", το νέο test bench και μνήμη, "test13.v" και "memory13.hex", και ένα χαρακτηριστικό στιγμιότυπο, "signals13.jpg", από το Signalscan με ένα από τα πλέον πολύπλοκα tests, πακεταρισμένα στο αρχείο "ask13.tar" μέσω:

  tar -cvf ask13.tar   datapath13.v control13.v test13.v memory13.hex signals13.jpg
  ~hy225/bin/submit 13

Προαιρετική Άσκηση 13.4:   Απλή Ομοχειρία (Προ-Ανάγνωση επόμενης Εντολής)

Όσοι από σας ενδιαφέρεστε ιδιαίτερα γιά το hardware και έχετε χρόνο, αλλάξτε το datapath και την FSM και το κύκλωμα ελέγχου προκειμένου να εισάγετε στον επεξεργαστή σας μιάν απλή μορφή ομοχειρίας (pipelining) δύο (μόνο) επιπέδων: κατά τη διάρκεια εκτέλεσης κάθε εντολής θα γίνεται και η ανάγνωση της επόμενης εντολής. Αυτή η απλή μορφή pipelining ονομάζεται συνήθως "fetch-execute overlap".

Στην παλαιά (non-pipelined) μορφή του επεξεργαστή, κάθε εντολή "παραδίδει" στην επόμενή της --εκτός από τα περιεχόμενα των καταχωρητών γενικού σκοπού $0-$31 και τα περιεχόμενα της μνήμης-- την τιμή (διεύθυνση) που περιέχεται στον PC, και η οποία καθορίζει από πού θα διαβαστεί η επόμενη εντολή. Στη νέα (pipelined) μορφή του επεξεργαστή, κάθε εντολή θα "παραδίδει" στην επόμενή της --εκτός από τους $0-$31 και τη μνήμη-- τόσο τη διεύθυνση της επόμενης εντολής συν 4, σαν περιεχόμενο του PC, όσο και την ίδια την επόμενη εντολή, σαν περιεχόμενο του IR. Έτσι, η εκτέλεση της κάθε εντολής θα ξεκινά με έτοιμο, φορτωμένο τον καταχωρητή IR, και επομένως θα γλιτώνουμε τον ένα κύκλο ανάγνωσης της εντολής, δηλαδή δεν θα υπάρχει η κατάσταση i_fetch. Αυτό θα επιτευχθεί ώς εξής:


[Up - Table of Contents]
[Prev - 12. Other Instructions]
[printer version - PDF]
[14. Processor Performance - Next]

Up to the Home Page of CS-225
 
© copyright University of Crete, Greece.
last updated: 17 May 2005, by M. Katevenis.