ΗΥ-225: Οργάνωση Υπολογιστών
Ανοιξη 2001
Τμ. Επ. Υπολογιστών
Πανεπιστήμιο Κρήτης
Σειρά Ασκήσεων 8:

Συμπλήρωση της Σχεδίασης του Επεξεργαστή

Προθεσμία έως Τετάρτη 2 Μαΐου (βδομάδα 11)


Ασκηση 8.1: Προσθήκη των Εντολών που λείπουν

Στην 6η και 7η σειρά ασκήσεων δεν είχαμε περιλάβει μερικές από τις εντολές που είχαμε μελετήσει στο κεφάλαιο 3. Τροποποιείστε το datapath σας και το κύκλωμα ελέγχου σας γιά να μπορεί ο επεξεργαστής σας να εκτελεί και αυτές --βάλτε τα αλλαγμένα modules σας στα αρχεία "datapath8.v" και "control8.v". Ακολουθεί ο κατάλογός των εντολών που πρέπει να προστεθούν, με μερικά σχόλια γιά καθεμία. Τα op-codes και funct-codes των εντολών του MIPS φαίνονται στη σελίδα 153 ή στην A-54 του βιβλίου.

Ασκηση 8.2: Προσθήκη Εξαιρέσεων

Προσθέστε στο datapath και στον έλεγχο όσα χρειάζονται γιά να εκλτελεί ο επεξεργαστής σας εξαιρέσεις (exceptions). Η ιδέα είναι η ίδια με ό,τι περιγράφει το βιβλίο στην παράγραφο 5.6 (σελίδες 410-416), αλλά εμείς θα έχουμε διαφορετικές αιτίες εξαιρέσεων, και μία μόνο πρόσθετη κατάσταση ελέγχου, την exception_st, γιά να τις υλοποιήσουμε. Οπως και στο βιβλίο, πάντως, θα προσθέσετε στο datapath δύο νέους (ακμοπυροδότητους) καταχωρητές: epc (Exception PC), των 32 bits, γιά να κρατά τη διεύθυνση της "κακιάς" εντολής, και cause (αιτία), επίσης των 32 bits, γιά να κρατά έναν κώδικα που υποδεικνύει την αιτία της εξαίρεσης. Οι αιτίες και οι αντίστοιχες δράσεις θα είναι: Τον καταχωρητή cause μπορείτε, αν προτιμάτε, να τον "συνθέσετε" από 26 (hardwired) μηδενικά στα 26 MS bits, έναν καταχωρητή των 2 bits "cause_pagefault" στα 2 επόμενα bits, έναν καταχωρητή των 2 bits "cause_alignment" στα 2 επόμενα bits, έναν καταχωρητή του 1 bit "cause_illegalOp" στο 1 επόμενο bit, και 1 (hardwired) μηδενικό στο 1 LS bit. Καθένας από τους 3 μικρούς καταχωρητές έχει το δικό του load enable, το οποίο ανάβει μόνο όταν εμφανιστεί η αντίστοιχη αιτία εξαίρεσης. Η είσοδος δεδομένων των καταχωρητών cause_alignment και cause_pagefault είναι κοινή και αποτελεί απλώς συνάρτηση της παρούσας κατάστασης.

Στην κατάσταση exception_st πρέπει πρώτον να αποθηκεύσουμε τη διεύθυνση της "κακιάς" εντολής στον καταχωρητή epc, και δεύτερον να φορτώσουμε στον pc τη διεύθυνση όπου ξεκινά ο interrupt handler. Η διεύθυνση της "κακιάς" εντολής είναι το περιεχόμενο του pc μείον 4 (αφού ο αρχικός pc είχε ήδη αυξηθεί κατά 4). Την αφαίρεση αυτή, "μείον 4", θα την κάνει η ALU στη διάρκεια της κατάστασης exception_st (προσέξτε όμως ότι στο σχήμα 5.48 (σελ. 414) του βιβλίου ο epc κακώς παίρνει είσοδο δεδομένων από τον ALUout --έπρεπε να παίρνει από το ALUresult, προκειμένου η εγγραφή σε αυτόν να γίνεται στο τελος του κύκλου exception_st). Οσο γιά τη διεύθυνση όπου ξεκινά ο interrupt handler, στον μεν κανονικό MIPS αυτή είναι η 32'h80000080, στην δε δική μας περίπτωση θα την κάνουμε να είναι η 32'd2048, προκειμένου αυτή να πέφτει μέσα στην υλοποιημένη μνήμη (στη μέση της).

Ασκηση 8.3: Πλήρες Debugging

Ελέγξτε εξονυχιστικά τον επεξεργαστή που σχεδιάσατε, και διορθώστε όλα τα λάθη που βρίσκετε, μέχρι ότου αυτός εκτελεί επιτυχώς τα μεγάλα προγράμματα που θα βρείτε στην περιοχή "~hy225/verilog/test/test8/".

Παραδώστε, όπως και στις προηγούμενες ασκήσεις, τον αλλαγμένο κώδικά σας "datapath8.v", "control8.v", και το test bench "test8.v", όπως τελικά τα διαμορφώσατε, και ένα χαρακτηριστικό στιγμιότυπο από το Signalscan της άσκησης 8.3 με ένα από τα πλέον πολύπλοκα tests (σε μορφή jpeg ή gif), πακεταρισμένα στο αρχείο "ask8.tar.gz", μέσω:

        tar -cvf ask8.tar datapath8.v control8.v test8.v signals8.gif
        gzip ask8.tar
        ~hy225/bin/submit 8

Προαιρετική Ασκηση 8.4: Βελτιστοποίηση Εντολών Αλματος

Οσοι από σας ενδιαφέρεστε ιδιαίτερα γιά το hardware και έχετε χρόνο, αλλάξτε το κύκλωμα ελέγχου, και πιθανόν και το datapath, προκειμένου οι εντολές άλματος (j, jr, jal) να εκτελούνται σε δύο (2) μόνο κύκλους ρολογιού αντί των τριών (3), τώρα, κύκλων ρολογιού. Προσέξτε οι αλλάγές που κάνετε να μην σας επιμηκύνουν τη διάρκεια του κύκλου ρολογιού (τουλάχιστο όχι πάνω από περίπου 1%), διότι τότε δεν θα συμφέρουν, δεδομένου ότι οι εντολές που βελτιστοποιείτε αποτελούν μόνο περίπου το 4% των εκτελουμένων εντολών των συνηθισμένων προγραμμάτων.


Up to the Home Page of CS-225
 
© copyright University of Crete, Greece.
Last updated: 3 and 26 Apr. 2001, by M. Katevenis.