Μικροπρογραμματιζόμενη μονάδα ελέγχου του MIPS
Για να υλοποιήσουμε τη μικροπρογραμματιζόμενη μονάδα ελέγχου του υπολογιστή MIPS, σχεδιάζουμε ένα μικροπρόγραμμα το οποίο υλοποιεί τις εντολές του MIPS. Το μικροπρόγραμμα αυτό είναι μία συμβολική αναπαράσταση της μονάδας ελέγχου και μεταφράζεται από ένα άλλο πρόγραμμα από τη μονάδα ελέγχου.
Η κάθε μικροεντολή αποτελείται από 8 πεδία. Στο σχήμα 3.4.12 φαίνονται τα πεδία των εντολών και η λειτουργία του κάθε πεδίου.
Όνομα πεδίου | Λειτουργία πεδίου |
---|---|
Μονάδα ελέγχου της ALU | Καθορίζει τη λειτουργία της ALU κατά τη διάρκεια του κύκλου ρολογιού. |
SRC1 | Καθορίζει τον πρώτο πηγαίο τελεστέο της ALU. |
SRC2 | Καθορίζει το δεύτερο πηγαίο τελεστέο της ALU. |
Έξοδος της ALU | Καθορίζει τον καταχωρητή στον οποίο πρόκειται να εγγραφεί το αποτέλεσμα από την ALU. |
Μνήμη | Καθορίζει την εγγραφή ή την ανάγνωση και τη διεύθυνση της μνήμης. |
Καταχωρητής μνήμης | Καθορίζει τον καταχωρητή προορισμού (για ανάγνωση στη μνήμη) ή τη διεύθυνση των τιμών (για εγγραφή στη μνήμη). |
PCWrite control | Καθορίζει την εγγραφή στο απαριθμητή προγράμματος (PC). |
Sequencing | Καθορίζει την επόμενη εντολή που πρόκειται να εκτελεστεί. |
Σχήμα 3.4.12 - Τα 8 πεδία της μικροεντολής. Τα επτά πρώτα πεδία ελέγχουν τη δίοδο δεδομένων, ενώ το τελευταίο πεδίο (Sequencing), καθορίζει τον τρόπο με τον οποίο επιλέγεται η επόμενη εντολή που πρόκειται να εκτελεστεί.
Οι μικροεντολές συνήθως τοποθετούνται σε ROM ή PLA, οπότε μπορούμε να βρούμε τη διεύθυνση των μικροεντολών. Συνήθως, η διεύθυνση της επόμενης εντολής είναι αυτή που ακολουθεί στη σειρά, με τον ίδιο ακριβώς τρόπο που γίνεται η επιλογή του αριθμού της επόμενης κατάστασης στις μηχανές πεπερασμένων καταστάσεων. Υπάρχουν τρεις μέθοδοι για την επιλογή της επόμενης εντολής που πρόκειται να εκτελεστεί:
Αύξηση της διεύθυνσης της εκτελούμενης εντολής, έτσι ώστε να καθοριστεί η διεύθυνση της επόμενης εντολής. Αυτό καθορίζεται στο μικροπρόγραμμα επιλέγοντας την τιμή Seq στο πεδίο Sequencing.
Διακλάδωση της μικροεντολής έτσι ώστε να εκτελεστεί η επόμενη εντολή του υπολογιστή MIPS. Η αρχική μικροεντολή (η οποία βρίσκεται στην κατάσταση 0), είναι εντολή Ανάκλησης και γίνεται επιλογή της τιμής Ανάκληση στο πεδίο Sequencing έτσι ώστε να καθοριστεί η λειτουργία της ανάκλησης.
Η επιλογή της επόμενης μικροεντολής βασίζεται στην είσοδο της μονάδας ελέγχου. Η διαδικασία σύμφωνα με την οποία η επιλογή της επόμενης εντολής βασίζεται στην είσοδο μίας μονάδας ονομάζεται αποστολή. Οι λειτουργίες της αποστολής υλοποιούνται με τη δημιουργία ενός πίνακα ο οποίος περιέχει τις διευθύνσεις των εντολών που πρόκειται να εκτελεστούν. Η είσοδος της μονάδας ελέγχου λειτουργεί ως ευρετήριο για τον πίνακα αυτό, ο οποίος μπορεί να υλοποιηθεί σε ROM ή PLA. Για την υλοποίηση ενός σύνθετου πίνακα αποστολής, χρειάζονται δύο πίνακες αποστολής, ένας για την αποστολή από την κατάσταση 1 και ένα για την αποστολή από την κατάσταση 2. Η επόμενη μικροεντολή καθορίζεται από μία λειτουργία αποστολής τοποθετώντας την τιμή Dispatch i στο επίπεδο Sequencing.
Το σχήμα που ακολουθεί περιγράφει τις τιμές που μπορεί να έχει κάθε πεδίο της μικροεντολής, καθώς και την επίδραση των διαφορετικών αυτών τιμών.
Όνομα πεδίου | Τιμή πεδίου | Λειτουργία του πεδίου |
---|---|---|
Μονάδα ελέγχου της ALU | Add | Γίνεται πρόσθεση στην ALU. |
Func code | Χρησιμοποιεί τον κωδικό λειτουργίας της εντολής για να καθορίσει τη μονάδα ελέγχου της ALU. | |
Subt | Γίνεται αφαίρεση στην ALU. | |
SRC1 | PC | Η πρώτη είσοδος της ALU είναι ο PC. |
rs | Η πρώτη είσοδος της ALU είναι ο καταχωρητής rs. | |
SRC2 | 4 | Η δεύτερη είσοδος της ALU είναι το 4. |
Extend | Η δεύτερη είσοδος της ALU είναι η έξοδος της μονάδας επέκτασης προσήμου. | |
Extshft | Η δεύτερη είσοδος της ALU είναι η έξοδος της μονάδας ολίσθησης κατά 2. | |
rt | Η δεύτερη είσοδος της ALU είναι ο καταχωρητής rt. | |
Έξοδος της ALU | Target | Γίνεται εγγραφή της εξόδου της ALU στον καταχωρητή Στόχο. |
rd | Γίνεται εγγραφή της εξόδου της ALU στον καταχωρητή rd. | |
Μνήμη | Ανάγνωση του PC | Η διεύθυνση για την ανάγνωση της μνήμης είναι το περιεχόμενο του PC. |
Ανάγνωση της ALU | Η διεύθυνση για την ανάγνωση της μνήμης είναι η έξοδος της ALU. | |
Εγγραφή της ALU | Η διεύθυνση για την εγγραφή της μνήμης είναι η έξοδος της μνήμης. | |
Καταχωρητής μνήμης | IR | Γίνεται εγγραφή των δεδομένων από τη μνήμη, στον καταχωρητή εντολών. |
Εγγραφή rt | Γίνεται εγγραφή των δεδομένων από τη μνήμη, στον καταχωρητή rt. | |
Ανάγνωση rt | Τα δεδομένα για την εγγραφή της μνήμης, προέρχονται από τον καταχωρητή rt. | |
PCWrite control | ALU | Γίνεται εγγραφή της εξόδου της ALU στον PC. |
Target - cond | Αν η έξοδος Zero της ALU είναι ενεργοποιημένη, τότε γίνεται εγγραφή των περιεχομένων του καταχωρητή Στόχος, στον PC. | |
Διεύθυνση μεταπήδησης | Γίνεται εγγραφή της διεύθυνσης μεταπήδησης της εντολής, στον PC. | |
Sequencing | Seq | Η επόμενη μικροεντολή είναι αυτή που ακολουθεί διαδοχικά. |
Fetch | Πήγαινε στην πρώτη μικροεντολή, έτσι ώστε να ξεκινήσει η επόμενη εντολή. | |
Dispatch i | Η αποστολή χρησιμοποιεί τη ROM, η οποία καθορίζεται από το i (1 ή 2). |
Σχήμα 3.4.13 - Οι τιμές που μπορούν να πάρουν τα πεδία μιας μικροεντολής και η λειτουργία των πεδίων, ανάλογα με την τιμή που έχουν.