HY225 - Οργάνωση Υπολογιστών
Άσκηση 9η - Υλοποίηση Τμήματος Ελέγχου και Ολοκλήρωση του Επεξεργαστή
27/4/2013 εως 12/5/2013
Χρήστος Σωτηρίου
-
Στόχοι της 9ης Άσκησης
Οι στόχοι της ένατης άσκησης είναι (α) η υλοποίηση του ελέγχου του
επεξεργαστή, δηλ. της σχετικής ΜΠΚ (Μηχανής Πεπερασμένων Καταστάσεων),
η οποία παράγει τα σήματα ελέγχου, βάση της τρέχουσας εντολής υπο
εκτέλεση και σχετικών σημάτων του τμήματος δεδομένων, και οδηγεί το
τμήμα των δεδομένων, και (β) η συννένωση των τμημάτων δεδομένων και
ελέγχου στον πλήρη επεξεργαστή, και η επαλήθευση της ορθής λειτουργίας
του ως προς την εκτέλεση των τύπων εντολών που υποστηρίζει.
Και οι δυο αυτοί στόχοι θα συντελεστούν με την χρήση της γλώσσας
περιγραφής υλικού 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
-
Το Τμήμα Ελέγχου του Επεξεργαστή
Το τμήμα ελέγχου του επεξεργαστή αποτελεί το δυικό του τμήματος
δεδομένων, το οποίο υλοποιήθηκε στην προηγούμενη άσκηση. Στα δυο
παρακάτω σχήματα παρουσιάζεται η δομή του τμήματος δεδομένων που
υλοποιήθηκε στην προηγούμενη άσκηση.
Τμήμα Δεδομένων του Επεξεργαστή - Αριστερό Μέρος
Τμήμα Δεδομένων του Επεξεργαστή - Δεξιό Μέρος
Το τμήμα ελέγχου, ως ζεύγος του τμήματος δεδομένων, οδηγεί το κάθε
σήμα εισόδου του τμήματος δεδομένων, και αντίστροφα, το κάθε σήμα
εξόδου του τμήματος δεδομένων οδηγεί το τμήμα ελέγχου. Έτσι,
συνενώνοντας τα δυο τμήματα, προκύπτει η πλήρης υλοποίηση του
επεξεργαστή. Στο παρακάτω σχήμα φαίνεται η δομή της ΜΠΚ ελέγχου του
επεξεργαστή, όπου παρουσιάζονται οι διαφορετικές καταστάσεις που
απαιτούνται, οι μεταβάσεις μεταξύ αυτών, είτε υπο την συνθήκη του
τύπου της εντολής, είτε χωρίς συνθήκη, και για κάθε κατάσταση οι
απαιτούμενες ενέργειες, οι οποίες και αντιστοιχούν στην οδήγηση των
σχετικών σημάτων ελέγχου. Η ΜΠΚ λειτουργεί σύγχρονα, βασιζόμενη στο
σήμα ρολογιού, και εξετάζει την αλλαγή κατάστασης σε κάθε κύκλο του,
δειγματοληπτώντας τα σχετικά δεδομένα (μεταβάσεις απο την τρέχουσα
κατάσταση στην επόμενη).
ΜΠΚ Ελέγχου του Επεξεργαστή
Στο παραπάνω σχήμα διακρίνουμε τις δυο καταστάσεις της ΜΠΚ οι οποίες
εκτελούνται ανεξαρτήτως του τύπου εντολής. Αυτές είναι, η φόρτωση της
εντολής (i_fetch), και η αποκωδικοποίηση της και η
ανάγνωση των καταχωρητών (decode_rr). Παρατηρούμε ότι απο
την κατάσταση i_fetch στον επόμενο κύκλο μεταβαίνουμε
πάντα στην κατάσταση decode_rr, χωρίς η μετάβαση να
βασίζεται σε κάποιο σήμα. Στην κατάσταση decode_rr, η
επόμενη κατάσταση εξαρτάται απο τον τύπο της εντολής
(opcode). Διατρέχοντας την ΜΠΚ, παρατηρούμε ότι οι εντολές
sw απαιτούν 4 καταστάσεις, δηλ. 4 κύκλους,
και ανάλογα οι lw, R, beq/bne, j απαιτούν
5, 4 3 και 3 καταστάσεις (η κύκλους) αντίστοιχα.
Σας προτείνουμε να υλοποιήσετε την άσκηση στα παρακάτω δυο μέρη, στο Α
μέρος να υλοποιήσετε και να επαληθεύσετε την βασική λειτουργία της
ΜΠΚ, οδηγώντας τις εισόδους της, ενώ στο Β να επαληθεύσετε την ορθή
λειτουργία του ολοκληρωμένου επεξεργαστή.
-
Μέρος Α - Περιγραφή Καταστάσεων, Μεταβάσεων και Εξόδων της ΜΠΚ
Στο παρακάτω σχήμα φαίνεται η κυκλωματική δομή της ΜΠΚ που θα πρέπει
να υλοποιήσετε, και η προτεινόμενη αντιστοιχία της σε τμήματα
always της Verilog.
Δομή ΜΠΚ
Σας προτείνουμε υλοποίηση της μονάδας ελέγχου με δυο τμήματα
always, αντίστοιχα με το παραπάνω σχήμα, ενα
ακολουθιακό, το οποίο λειτουργεί στην ακμή του ρολογιού, και το οποίο
υλοποιεί τον καταχωρητή κατάστασης, και ενα συνδυαστικό, το οποίο (α)
προσδιορίζει την επόμενη κατάσταση βάση τις τρέχουσας και των εισόδων
(όταν χρειάζονται) και (β) τις τιμές των εξόδων.
Περιγράψτε, βάση των σημάτων του πλαισίου δοκιμής της 7ης Άσκησης, την
ΜΠΚ του επεξεργαστή, μετατρέποντας τις λειτουργίες της κάθε κατάστασης
του σχήματος της ΜΠΚ σε σήματα του τμήματος δεδομένων. Όλα τα σήματα
που απαιτεί το τμήμα δεδομένων μπορούν να προσδιοριστούν στην
κατάλληλη κατάσταση της ΜΠΚ. Σας προτείνουμε να υλοποιήσετε όλα τα
σήματα απευθείας απο την ΜΠΚ για λόγους απλότητας, χωρίς συνδυαστική
λογική εξωτερική της ΜΠΚ. Παράδειγματος χάριν, το ALUop,
θα μπορούσε να υλοποιηθεί συνδυαστικά απο τα funct και
op, όμως η απευθείας οδήγηση του ακολουθιακά απο την
ΜΠΚ, στην κατάλληλη κατάσταση, οδηγεί σε απλούστερη υλοποίηση.
Παρακάτω παραθέτεται o προτεινόμενος σκελετός της μονάδας
ελέγχου. Προσέξτε οτι πρίν την ανάθεση των σήματων στην κάθε
κατάσταση, είναι απαραίτητο να εισάγετε μια μικρή καθυστέρηση, λόγω
των συνθηκών διατήρησης (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
Σας προτείνουμε να επαληθεύσετε την ΜΠΚ μόνη της, έστω και
στοιχειωδώς, πριν την σύνδεση της με το τμήμα δεδομένων. Προσέξτε οτι
η ΜΠΚ πρέπει να αρχικοποιηθεί σωστά και η μή σωστή αρχικοποίηση
αποτελεί το συχνότερο πρόβλημα σε κάθε είδους κύκλωμα. Σε πραγματικά
κυκλώματα παρέχεται ενα ειδικό σήμα αρχικοποίησης
(reset). Για λόγους απλότητας, στην
παρούσα άσκηση μπορείτε να αρχικοποιήσετε την κατάσταση απευθείας απο
το πλαίσιο δοκιμής, ως εξής:
MIPScontrol.currState = 4'b0; // Current State //
MIPScontrol.nextState = 4'b0; // Next State //
Όπου MIPScontrol είναι το όνομα της
εμφάνισης της μονάδας ελέγχου του
επεξεργαστή, controlFSM, στο πλαίσιο
ελέγχου.
-
Μέρος Β - Διασύνδεση ΜΠΚ με Τμήμα Δεδομένων του Επεξεργαστή και Ολοκληρωμένος Έλεγχος Ορθής Λειτουργίας
Έχοντας επαληθεύσει την ορθή αυτόνομη λειτουργία της ΜΠΚ, ως επόμενο
βήμα θα πρέπει να επαληθεύσετε ότι τα δυο τμήματα, δεδομένα και
έλεγχος, συνεργάζονται σωστά όταν συννενωθούν, και οτι η υλοποίηση
όλων των υποστηριζόμενων εντολών του επεξεργαστή
(δηλ. sw, lw, add, sub, and, or, slt, beq, bne,
j) είναι η αναμενόμενη, τόσο σε επίπεδο λειτουργίας αλλά όσο ως
προς τον απαιτούμενο αριθμό κύκλων.
Για την επαλήθευση θα πρέπει να γράψετε ενα απλό πλαίσιο δοκιμής, το
οποίο (α) θα διασυνδέει τις δυο μονάδες, (β) θα παρέχει το σήμα του
ρολογιού, και (γ) θα αρχικοποιεί την μνήμη του επεξεργαστή και την
κατάσταση της ΜΠΚ. Επίσης, σας προτείνεται, για διευκόλυνση της
επαλήθευσης, σε κάθε κύκλο να εκτυπώνετε τα περιεχόμενα του Αρχείο
Καταχωρητών του επεξεργαστή και της μνήμης, για να μπορείτε να δείτε
άμεσα τις όποιες (αναμενόμενες η μή) αλλαγές κατάστασης απο κάθε
εκτελούμενη εντολή. Κατα την εκτέλεση της κάθε εντολής, θα πρέπει να
ελέγξετε ότι τα αποτελέσματα είναι σωστά, αλλά και οτι η εντολή
διαρκεί τον προβλεπόμενο αριθμό κύκλων.
-
Προθεσμία Παράδοσης, Υποβολή της Άσκησης
Η προθεσμία παράδοσης της 8ης Άσκησης είναι η 12/5/2013 .
Μέχρι την προθεσμία της εργασίας θα πρέπει:
- να έχετε υποβάλλει τον κώδικα σας, δηλ. τρια αρχεία Verilog
, την υλοποίηση του τμήματος δεδομένων του επεξεργαστή, του τμήματος ελέγχου και το
σχετικό πλαίσιο δοκιμής,
- να έχετε υποβάλλει στιμιότυπα της προσομείωσης (κυμματομορφές,
έξοδο του προσομειωτή), που να επαληθεύουν την ορθή λειτουργία μαζί με
σύντομο, συνοδευτικό, επεξηγηματικό κείμενο, το οποίο να εξηγεί πως τα
στιγμιότυπα επαληθεύουν την ορθότητα της λειτουργίας.
Η υποβολή γίνεται μέσω του
προγράμματος submit ως εξής:
submit exerciseX
όπου στο X αντιστοιχεί ο αριθμός της
Άσκησης.
Χ. Σωτηρίου - Tελευταία ενημέρωση - 17/4/2013.