È Ò Ô Ø Ñ Ó ÃÖ Ø ¹ ÌÑ Ñ Ô Ø Ñ ÍÔÓÐÓ ØôÒ À;¾ ¹ ÇÖ ÒÛ ÍÔÓÐÓ ØôÒ Ö Ò Ü Ñ ÒÓ ¹ Ñ ³ ØÓ ¾¼½½¹¾¼½¾ ³ ¹ ÍÐÓÔÓ ÌÑ Ñ ØÓ Ð ÕÓÙ ÇÐÓ Ð ÖÛ ØÓÙ Ô Ü Ö Ø ¾»»¾¼½ Û ½¾»»¾¼½ Χ. Σωτηρίου ½ ËØ ÕÓ Ø ³ Οι στόχοι της ένατης άσκησης είναι(α) η υλοποίηση του ελέγχου του επεξεργαστή, δηλ. της σχετικής ΜΠΚ(Μηχανής Πεπερασμένων Καταστάσεων), η οποία παράγει τα σήματα ελέγχου, βάση της τρέχουσας εντολής υπο εκτέλεση και σχετικών σημάτων του τμήματος δεδομένων, και οδηγεί το τμήμα των δεδομένων, και(β) η συννένωση των τμημάτων δεδομένων και ελέγχου στον πλήρη επεξεργαστή, και η επαλήθευση της ορθής λειτουργίας του ως προς την εκτέλεση των τύπων εντολών που υποστηρίζει. Και οι δυο αυτοί στόχοι θα συντελεστούν με την χρήση της γλώσσας περιγραφής υλικού Verilog, όπουημενυλοποίησητουελέγχουκαιόλωντωνσχετικώνσημάτωνθαπρέπειναγίνειχρησιμοποιώντας κατάλληλη περιγραφή ΜΠΚ, η δε ολοκλήρωση και επαλήθευση θα πραγματοποιηθεί με την δομική συννένωση των δυο τμημάτων και την υλοποίηση πλαισίου ελέγχου, το οποίο θα φορτώνει ενα πρόγραμμα στον επεξεργαστή. Το πρόγραμμα αυτό θα επαληθεύει την ορθή λειτουργία του κάθε τύπου εντολής. Οι συγκεκριμένες εντολές που θα πρέπει να υποστηρίζει ο πλήρης επεξεργαστήςείναιοιεξής: sw, lw, add, sub, and, or, slt, beq, bne, j. Παρακάτωπαραθέτεται ενα προτεινόμενο πρόγραμμα προς εκτέλεση, το οποίο περιλαμβάνει όλες τις διαφορετικές εντολές πουθαπρέπειναεκτελείσωστάοεπεξεργαστής,εντόςτης jπουθαπρέπειναπροσθέσετε. 0: lw $1, 32($0) 4: lw $2, 36($0) 8: add $3, $1, $2 c: sw $3, 40($0) 10: or $4, $2, $3 14: slt $5, $2, $4 18: bne $4, $0, -7-20: 5 24: fffe 28: 0 Σχήμα 1: Προτεινόμενο Πρόγραμμα Επαλήθευσης του ολοκληρωμένου Επεξεργαστή ¾ ÌÓ ÌÑ Ñ Ð ÕÓÙ ØÓÙ Ô Ü Ö Ø Το τμήμα ελέγχου του επεξεργαστή αποτελεί το δυικό του τμήματος δεδομένων, το οποίο υλοποιήθηκε στην προηγούμενη άσκηση. Παρακάτω, στα Σχήματα 2 και 3 παρουσιάζεται η δομή του 1
τμήματος δεδομένων που υλοποιήθηκε στην προηγούμενη άσκηση. Σχήμα 2: Τμήμα Δεδομένων του Επεξεργαστή- Αριστερό Μέρος Σχήμα 3: Τμήμα Δεδομένων του Επεξεργαστή- Δεξιό Μέρος Το τμήμα ελέγχου, ως ζεύγος του τμήματος δεδομένων, οδηγεί το κάθε σήμα εισόδου του τμήματος δεδομένων, και αντίστροφα, το κάθε σήμα εξόδου του τμήματος δεδομένων οδηγεί το τμήμα ελέγχου. Ετσι, συνενώνοντας τα δυο τμήματα, προκύπτει η πλήρης υλοποίηση του επεξεργαστή. Στο Σχήμα 4, φαίνεται η δομή της ΜΠΚ ελέγχου του επεξεργαστή, όπου παρουσιάζονται οι διαφορετικές καταστάσεις που απαιτούνται, οι μεταβάσεις μεταξύ αυτών, είτε υπο την συνθήκη 2
του τύπου της εντολής, είτε χωρίς συνθήκη, και για κάθε κατάσταση οι απαιτούμενες ενέργειες, οι οποίες και αντιστοιχούν στην οδήγηση των σχετικών σημάτων ελέγχου. Η ΜΠΚ λειτουργεί σύγχρονα, βασιζόμενη στο σήμα ρολογιού, και εξετάζει την αλλαγή κατάστασης σε κάθε κύκλο του, δειγματοληπτώντας τα σχετικά δεδομένα(μεταβάσεις απο την τρέχουσα κατάσταση στην επόμενη). Σχήμα 4: ΜΠΚ Ελέγχου του Επεξεργαστή Στο παραπάνω σχήμα διακρίνουμε τις δυο καταστάσεις της ΜΠΚ οι οποίες εκτελούνται ανεξαρτήτως του τύπου εντολής. Αυτές είναι, η φόρτωση της εντολής(i_fetch), και η αποκωδικοποίηση της και η ανάγνωση των καταχωρητών(decode_rr). Παρατηρούμε ότι απο την κατάσταση i_fetch στον επόμενο κύκλο μεταβαίνουμε πάντα στην κατάσταση decode_rr, χωρίς η μετάβαση να βασίζεται σε κάποιο σήμα. Στην κατάσταση decode_rr, η επόμενη κατάσταση εξαρτάται απο τον τύπο της εντολής(opcode). Διατρέχοντας την ΜΠΚ, παρατηρούμε ότι οι εντολές sw απαιτούν 4 καταστάσεις,δηλ. 4κύκλους,καιανάλογαοι lw, R, beq/bne, jαπαιτούν5,43και3καταστάσεις (η κύκλους) αντίστοιχα. Σας προτείνουμε να υλοποιήσετε την άσκηση στα παρακάτω δυο μέρη, στο Α μέρος να υλοποιήσετε και να επαληθεύσετε την βασική λειτουργία της ΜΠΚ, οδηγώντας τις εισόδους της, ενώ στο Β να επαληθεύσετε την ορθή λειτουργία του ολοκληρωμένου επεξεργαστή. Å ÖÓ ¹ È Ö Ö Ã Ø Ø ÛÒ Å Ø ÛÒ Ü ÛÒ Ø ÅÈÃ ΣτοΣχήμα5φαίνεταιηκυκλωματικήδομήτηςΜΠΚπουθαπρέπειναυλοποιήσετε,καιηπροτεινόμενη αντιστοιχία της σε τμήματα always της Verilog. Σχήμα5:ΔομήΜΠΚ Σας προτείνουμε υλοποίηση της μονάδας ελέγχου με δυο τμήματα always, αντίστοιχα με το 3
παραπάνω σχήμα, ενα ακολουθιακό, το οποίο λειτουργεί στην ακμή του ρολογιού, και το οποίο υλοποιεί τον καταχωρητή κατάστασης, και ενα συνδυαστικό, το οποίο(α) προσδιορίζει την επόμενη κατάσταση βάση τις τρέχουσας και των εισόδων(όταν χρειάζονται) και(β) τις τιμές των εξόδων. Περιγράψτε, βάση των σημάτων του πλαισίου δοκιμής της 7ης Άσκησης, την ΜΠΚ του επεξεργαστή, μετατρέποντας τις λειτουργίες της κάθε κατάστασης του σχήματος της ΜΠΚ σε σήματα του τμήματος δεδομένων. Ολα τα σήματα που απαιτεί το τμήμα δεδομένων μπορούν να προσδιοριστούν στην κατάλληλη κατάσταση της ΜΠΚ. Σας προτείνουμε να υλοποιήσετε όλα τα σήματα απευθείας απο την ΜΠΚ για λόγους απλότητας, χωρίς συνδυαστική λογική εξωτερική της ΜΠΚ. Παράδειγματος χάριν, το ALUop, θα μπορούσε να υλοποιηθεί συνδυαστικά απο τα funct και op, όμως η απευθείας οδήγηση του ακολουθιακά απο την ΜΠΚ, στην κατάλληλη κατάσταση, οδηγεί σε απλούστερη υλοποίηση. Παρακάτω παραθέτεται ο προτεινόμενος σκελετός της μονάδας ελέγχου. Προσέξτε οτι πρίν την ανάθεση των σήματων στην κάθε κατάσταση, είναι απαραίτητο να εισάγετε μια μικρή καθυστέρηση, λόγω των συνθηκών διατήρησης(hold) των τιμών των σημάτων που απαιτούν οι μονάδες της βιβλιοθήκης, οι οποίες και χρησιμοποιούνται στο τμήμα δεδομένων. Σε πραγματική κυκλωματική υλοποίηση αυτό δεν θα ήταν απαραίτητο, μια και θα εξασφαλιζόταν απο την καθυστέρηση των πυλών και των καταχωρητών. timescale 1ns/1ps define hold 1 define LW 6 b100011 define SW 6 b101011 module controlfsm(clk, pcld, IorD,...); input clk; output pcld, IorD,...; parameter i_fetch = 4 b0000, decode_rr = 4 b0001,...; reg [3:0] currstate; reg [3:0] nextstate; always @(posedge clk) begin currstate = #( hold) nextstate; end always @(currstate or op or funct or zero) begin #( hold); case (currstate)... endcase end endmodule Σχήμα 6: Σκελετός Μονάδας Ελέγχου(ΜΠΚ) του Επεξεργαστή Σας προτείνουμε να επαληθεύσετε την ΜΠΚ μόνη της, έστω και στοιχειωδώς, πριν την σύνδεση τηςμετοτμήμαδεδομένων.προσέξτεοτιημπκπρέπεινααρχικοποιηθείσωστάκαιημήσωστή αρχικοποίηση αποτελεί το συχνότερο πρόβλημα σε κάθε είδους κύκλωμα. Σε πραγματικά κυκλώματα παρέχεται ενα ειδικό σήμα αρχικοποίησης(reset). Για λόγους απλότητας, στην παρούσα άσκηση μπορείτε να αρχικοποιήσετε την κατάσταση απευθείας απο το πλαίσιο δοκιμής, ως εξής: 4
MIPScontrol.currState = 4 b0; // Current State // MIPScontrol.nextState = 4 b0; // Next State // Οπου MIPScontrol είναι το όνομα της εμφάνισης της μονάδας ελέγχου του επεξεργαστή, controlfsm, στο πλαίσιο ελέγχου. Å ÖÓ ¹ Ò ÅÈÃ Ñ ÌÑ Ñ ÓÑ ÒÛÒ ØÓÙ Ô Ü Ö Ø ÇÐÓ Ð ÖÛÑ ÒÓ ³ Ð ÕÓ ÇÖ¹ Ä ØÓÙÖ Εχοντας επαληθεύσει την ορθή αυτόνομη λειτουργία της ΜΠΚ, ως επόμενο βήμα θα πρέπει να επαληθεύσετε ότι τα δυο τμήματα, δεδομένα και έλεγχος, συνεργάζονται σωστά όταν συννενωθούν, και οτι η υλοποίηση όλων των υποστηριζόμενων εντολών του επεξεργαστή (δηλ. sw, lw, add, sub, and, or, slt, beq, bne, j)είναιηαναμενόμενη,τόσοσεεπίπεδο λειτουργίας αλλά όσο ως προς τον απαιτούμενο αριθμό κύκλων. Για την επαλήθευση θα πρέπει να γράψετε ενα απλό πλαίσιο δοκιμής, το οποίο(α) θα διασυνδέει τιςδυομονάδες,(β)θαπαρέχειτοσήματουρολογιού,και(γ)θααρχικοποιείτηνμνήμητουεπεξεργαστή και την κατάσταση της ΜΠΚ. Επίσης, σας προτείνεται, για διευκόλυνση της επαλήθευσης, σε κάθε κύκλο να εκτυπώνετε τα περιεχόμενα του Αρχείο Καταχωρητών του επεξεργαστή και της μνήμης, για να μπορείτε να δείτε άμεσα τις όποιες(αναμενόμενες η μή) αλλαγές κατάστασης απο κάθε εκτελούμενη εντολή. Κατα την εκτέλεση της κάθε εντολής, θα πρέπει να ελέγξετε ότι τα αποτελέσματα είναι σωστά, αλλά και οτι η εντολή διαρκεί τον προβλεπόμενο αριθμό κύκλων. ÈÖÓ Ñ È Ö Ó ÍÔÓ ÓÐ Ø ³ Η προθεσμία παράδοσης της 9ης Άσκησης είναι η 12/5/2013. Μέχρι την προθεσμία της εργασίας θα πρέπει: να έχετε υποβάλλει τον κώδικα σας, δηλ. τρία αρχεία Verilog, την υλοποίηση του τμήματος δεδομένων του επεξεργαστή, του τμήματος του ελέγχου, και το σχετικό πλαίσιο δοκιμής, να έχετε υποβάλλει στιμιότυπα της προσομείωσης(κυμματομορφές, έξοδο του προσομειωτή), που να επαληθεύουν την ορθή λειτουργία μαζί με σύντομο, συνοδευτικό, επεξηγηματικό κείμενο, το οποίο να εξηγεί πως τα στιγμιότυπα επαληθεύουν την ορθότητα της λειτουργίας. Η υποβολή γίνεται μέσω του προγράμματος submit ως εξής: όπου στο X αντιστοιχεί ο αριθμός της Άσκησης. submit exercisex 5