Δημιουργία του μικροπρογράμματος
Για τη δημιουργία του μικροπρογράμματος της μονάδας ελέγχου, χωρίζουμε τις εντολές του μικροπρογράμματος σε επίπεδα. Τα επίπεδα αυτά μπορούν να χρησιμοποιηθούν για να καθορίσουν τα περιεχόμενα στους πίνακες αποστολής. Στο μικροπρόγραμμα υπάρχουν δύο περιπτώσεις στις οποίες το πεδίο μίας εντολής μπορεί να είναι κενό. Όταν το πεδίο το οποίο ελέγχει τη μονάδα λειτουργίας, ή το πεδίο το οποίο προκαλεί την εγγραφή της κατάστασης (όπως το πεδίο Μνήμης ή το πεδίο ALU destination), είναι κενό, τότε τα αντίστοιχα σήματα ελέγχου δεν είναι ενεργοποιημένα. Όταν το πεδίο το οποίο ελέγχει μόνο τον πολυπλέκτη που καθορίζει την είσοδο της μονάδας λειτουργίας, (όπως το πεδίο SRC1), μείνει κενό, σημαίνει πως η είσοδος της λειτουργικής μονάδας είναι αδιάφορη (ή η έξοδος του πολυπλέκτη είναι αδιάφορη).
Για την καλύτερη κατανόηση του μικροπρογράμματος, θα το χωρίσουμε σε τμήματα το καθένα από τα οποία σχετίζεται με ένα βήμα εκτέλεσης της εντολής.
Το πρώτο βήμα της εκτέλεσης των εντολών είναι η ανάκληση της εντολής, η αποκωδικοποίηση και ο υπολογισμός του επόμενου περιεχομένου του απαριθμητή προγράμματος, ή ο στόχος διακλάδωσης του απαριθμητή προγράμματος. Το παραπάνω βήμα αντιστοιχεί στα δύο πρώτα βήματα εκτέλεσης της εντολής. Οι δύο μικροεντολές που χρειάζονται για τα δύο αυτά βήματα απεικονίζονται στο παρακάτω σχήμα.
Επίπεδο | Μονάδα ελέγχου της ALU | SRC1 | SRC2 | ALU destination | Μνήμη | Καταχωρητής μνήμης | PCWrite control | Sequencing |
---|---|---|---|---|---|---|---|---|
Ανάκληση | Add | PC | 4 | Ανάγνωση του PC | IR | ALU | Seq | |
Add | PC | Extshft | Στόχος | Dispatch i |
Για την πρώτη μικροεντολή, η ενεργοποίηση των πεδίων, καθώς και τα αποτελέσματά τους φαίνονται στο παρακάτω σχήμα.
Πεδίο | Αποτέλεσμα |
---|---|
Μονάδα ελέγχου ALU, SRC1, SRC2 | Υπολογισμός του PC + 4 |
Μνήμης και καταχωρητής μνήμης | Ανάκληση της εντολής στον IR |
PCWrite control | Η έξοδος της ALU εγγράφεται στον PC |
Sequencing | Πήγαινε στην επόμενη μικροεντολή |
Για τη δεύτερη μικροεντολή, η ανάγνωση των καταχωρητών θα γίνει χρησιμοποιώντας τα πεδία του καταχωρητή εντολών. Οι υπόλοιπες λειτουργίες που ελέγχονται από τη μικροεντολή απεικονίζονται στο παρακάτω σχήμα.
Πεδίο | Αποτέλεσμα |
---|---|
Μονάδα ελέγχου ALU, SRC1, SRC2, ALU destination | Αποθήκευση του περιεχομένου του PC + sign-extension (IR[15-0]) << 2 στον καταχωρητή Στόχο |
Sequencing | Χρήση του πίνακα αποστολής 1 για την επιλογή της διεύθυνσης της επόμενης μικροεντολής |
Μπορούμε να θεωρήσουμε τη λειτουργία της αποστολής σαν μία εντολή case με το πεδίο opcode και τον πίνακα αποστολής 1, για την επιλογή ενός από τα τέσσερα είδη εντολών (αναφορά στη μνήμη, εντολές τύπου R, διακλάδωση με συνθήκη και μεταπήδηση). Το μικροπρόγραμμα για τις εντολές αναφοράς στη μνήμη, αποτελείται από τέσσερις μικροεντολές και απεικονίζεται στο σχήμα που ακολουθεί. Η πρώτη εντολή υπολογίζει τη διεύθυνση μνήμης. Οι δύο επόμενες εντολές την εντολή φόρτωσης (ανάγνωση της μνήμης και εγγραφή του καταχωρητή). Τέλος, για την εντολή αποθήκευσης χρειάζεται μόνο μία εντολή μετά τον υπολογισμό της διεύθυνσης μνήμης.
Επίπεδο | Μονάδα ελέγχου της ALU | SRC1 | SRC2 | ALU destination | Μνήμη | Καταχωρητής μνήμης | PCWrite control | Sequencing |
---|---|---|---|---|---|---|---|---|
LWSW1 | Add | rs | Επέκταση | Dispatch i | ||||
LW2 | Add | rs | Επέκταση | Ανάγνωση της ALU | Seq | |||
Add | rs | Επέκταση | Ανάγνωση της ALU | Εγγραφή του rt | Ανάκληση | |||
SW2 | Add | rs | Επέκταση | Εγγραφή της ALU | Ανάγνωση του rt | Ανάκληση |
Τα πεδία για την πρώτη μικροεντολή (LWSW1) και το αποτέλεσμα αυτών όταν είναι ενεργοποιημένα είναι:
Πεδίο | Αποτέλεσμα |
---|---|
Μονάδα ελέγχου ALU, SRC1, SRC2 | Υπολογισμός της διεύθυνσης μνήμης: Καταχωρητής (rs) + sign-extension (IR[15-0]) |
Sequencing | Ο δεύτερος πίνακας αποστολής καθορίζει αν η επόμενη μικροεντολή θα είναι η LW2 ή η SW2 |
Πεδίο | Αποτέλεσμα |
---|---|
Μονάδα ελέγχου ALU, SRC1, SRC2 | Η έξοδος της ALU καθορίζει τη διεύθυνση μνήμης |
Μνήμη | Γίνεται ανάγνωση της μνήμης (η διεύθυνση στην οποία θα γίνει ανάγνωση είναι η έξοδος της ALU) |
Sequencing | Πήγαινε στην επόμενη μικροεντολή |
Η επόμενη εντολή ολοκληρώνει την εκτέλεση της εντολής και αποτελείται από τα εξής πεδία:
Πεδίο | Αποτέλεσμα |
---|---|
Μονάδα ελέγχου ALU, SRC1, SRC2 | Η έξοδος της ALU καθορίζει τη διεύθυνση μνήμης |
Μνήμη | Γίνεται ανάγνωση της μνήμης (η διεύθυνση στην οποία θα γίνει ανάγνωση καθορίζεται από την έξοδο της ALU) και εγγραφή του αποτελέσματος στον καταχωρητή rt |
Sequencing | Πήγαινε στη μικροεντολή Ανάκληση |
Παρατηρούμε πως τα πεδία των δύο μικροεντολών για την υλοποίηση μιας εντολής φόρτωσης δε συγχέονται. Επομένως μπορούμε να τα ενώσουμε σε μία μικροεντολή η οποία θα έχει την εξής μορφή:
Επίπεδο | Μονάδα ελέγχου της ALU | SRC1 | SRC2 | ALU destination | Μνήμη | Καταχωρητής μνήμης | PCWrite control | Sequencing |
---|---|---|---|---|---|---|---|---|
LW2 | Add | rs | Επέκταση | Ανάγνωση της ALU | Εγγραφή του rt | Ανάκληση |
Πολλές φορές χρησιμοποιούμε βελτιστοποίηση του μικροκώδικα έτσι ώστε να μειώσουμε τον αριθμό των μικροεντολών. Ωστόσο, με αυτή την αλλαγή υπάρχει περίπτωση να αυξηθεί το μήκος του κύκλου ρολογιού, αφού η προσπέλαση της μνήμης και η εγγραφή του καταχωρητή πρέπει να γίνονται σε μία μόνο μικροεντολή. Επίσης, κάθε μικροεντολή πρέπει να αντιστοιχεί σε ένα κύκλο ρολογιού. Έτσι, όταν προσπαθούμε να βελτιστοποιήσουμε το μικροκώδικα πρέπει να γνωρίζουμε ποιες από τις λειτουργίες της διόδου δεδομένων μπορούν να εκτελεστούν κατά τη διάρκεια ενός κύκλου ρολογιού.
Η μικροεντολή αποθήκευσης (SW2), λειτουργεί με παρόμοιο τρόπο με τη μικροεντολή φόρτωσης (LW2). Τα πεδία που αποτελείται η μικροεντολή αποθήκευσης είναι:
Πεδίο | Αποτέλεσμα |
---|---|
Μονάδα ελέγχου ALU, SRC1, SRC2 | Η έξοδος της ALU καθορίζει τη διεύθυνση μνήμης |
Μνήμη και καταχωρητής μνήμης | Γίνεται ανάγνωση της μνήμης (η διεύθυνση στην οποία θα γίνει ανάγνωση καθορίζεται από την έξοδο της ALU) και το περιεχόμενο του καταχωρητή που καθορίζεται από το πεδίο rt, είναι η τιμή η οποία πρόκειται να εγγραφεί |
Sequencing | Πήγαινε στη μικροεντολή Ανάκληση |
Το μικροπρόγραμμα για τις εντολές τύπου R αποτελείται από δύο μικροεντολές: στην πρώτη εκτελούνται οι λειτουργίες της ALU και στη δεύτερη γίνεται εγγραφή του αποτελέσματος στο αρχείο καταχωρητών.
Επίπεδο | Μονάδα ελέγχου της ALU | SRC1 | SRC2 | ALU destination | Μνήμη | Καταχωρητής μνήμης | PCWrite control | Sequencing |
---|---|---|---|---|---|---|---|---|
Rformat1 | Κωδικός Func | rs | rt | Seq | ||||
Κωδικός Func | rs | rt | rd | Ανάκληση |
Οι δύο αυτές μικροεντολές μπορούν να ενωθούν έτσι ώστε να έχουμε μόνο μία μικροεντολή, όπως ακριβώς και στην εντολή φόρτωσης. Έτσι, οι λειτουργίες της ALU και η επανεγγραφή του καταχωρητή θα εκτελούνται σε ένα κύκλο ρολογιού, ο οποίος προφανώς θα είναι μεγαλύτερος. Για να ενώσουμε τις δύο μικροεντολές, αρχικά θα δούμε τα πεδία που αποτελούνται και το αποτέλεσμά τους όταν αυτά είναι ενεργοποιημένα. Η πρώτη μικροεντολή σχετίζεται με τις λειτουργίες που εκτελούνται στην ALU και αποτελείται από τα παρακάτω πεδία:
Πεδίο | Αποτέλεσμα |
---|---|
Μονάδα ελέγχου ALU, SRC1, SRC2 | Η ALU εκτελεί την πράξη ανάμεσα στα περιεχόμενα των καταχωρητών rs και rt, χρησιμοποιώντας το πεδίο func το οποίο καθορίζει την πράξη που πρόκειται να εκτελεστεί |
Sequencing | Πήγαινε στην επόμενη μικροεντολή |
Στη δεύτερη μικροεντολή γίνεται εγγραφή του αποτελέσματος (έξοδος της ALU), στο αρχείο καταχωρητών. Τα πεδία που αποτελούν τη δεύτερη μικροεντολή είναι:
Πεδίο | Αποτέλεσμα |
---|---|
Μονάδα ελέγχου ALU, SRC1, SRC2 | Το πεδίο ALU dest καθορίζει ότι το rd χρησιμοποιείται για την επιλογή του καταχωρητή προορισμού |
Sequencing | Πήγαινε στην μικροεντολή Ανάκληση |
Το μικροπρόγραμμα για τις εντολές διακλάδωσης με συνθήκη αποτελείται από μία μικροεντολή:
Επίπεδο | Μονάδα ελέγχου της ALU | SRC1 | SRC2 | ALU destination | Μνήμη | Καταχωρητής μνήμης | PCWrite control | Sequencing |
---|---|---|---|---|---|---|---|---|
BEQ1 | Subt | rs | rt | Target - cond | Ανάκληση |
Πεδίο | Αποτέλεσμα |
---|---|
Μονάδα ελέγχου ALU, SRC1, SRC2 | Η ALU εκτελεί αφαίρεση στο περιεχόμενο του καταχωρητή για να δημιουργήσει την έξοδο Zero |
PCWrite control | Γίνεται εγγραφή στον απαριθμητή προγράμματος της τιμής του καταχωρητή Στόχος, εάν η έξοδος Zero της ALU είναι αληθής |
Sequencing | Πήγαινε στη μικροεντολή Ανάκληση |
Το μικροπρόγραμμα για τις εντολές μεταπήδησης αποτελείται από μία μικροεντολή:
Επίπεδο | Μονάδα ελέγχου της ALU | SRC1 | SRC2 | ALU destination | Μνήμη | Καταχωρητής μνήμης | PCWrite control | Sequencing |
---|---|---|---|---|---|---|---|---|
JUMP1 | Διεύθυνση μεταπήδησης | Ανάκληση |
Μόνο δύο από τα πεδία της μικροεντολής μεταπήδησης είναι ενεργοποιημένα. Τα πεδία αυτά είναι:
Πεδίο | Αποτέλεσμα |
---|---|
PCWrite control | Γίνεται εγγραφή στον απαριθμητή προγράμματος χρησιμοποιώντας το πεδίο jump |
Sequencing | Πήγαινε στη μικροεντολή Ανάκληση |
Στο σχήμα 3.4.14 απεικονίζεται το μικροπρόγραμμα για την εκτέλεση όλων των εντολών, το οποίο αποτελείται από δέκα μικροεντολές. Απ΄ τη στιγμή που το μικροπρόγραμμα αποτελείται από μικροεντολές και πίνακες αποστολής, μπορεί να υλοποιηθεί από ROM ή PLA. Τα σήματα ελέγχου της διόδου δεδομένων σε κάθε μικροεντολή, μπορούν να υλοποιηθούν χρησιμοποιώντας λογικές πύλες και τα χρησιμοποιούμε για την υλοποίηση μιας μηχανής πεπερασμένων καταστάσεων.
Επίπεδο | Μονάδα ελέγχου της ALU | SRC1 | SRC2 | ALU destination | Μνήμη | Καταχωρητής μνήμης | PCWrite control | Sequencing |
---|---|---|---|---|---|---|---|---|
Ανάκληση | Add | PC | 4 | Ανάγνωση του PC | IR | ALU | Seq | |
Add | PC | Extshft | Στόχος | Dispatch i | ||||
LWSW1 | Add | rs | Extshft | Dispatch i | ||||
LW2 | Add | rs | Extshft | Ανάγνωση της ALU | Seq | |||
Add | rs | Extshft | Ανάγνωση της ALU | Εγγραφή του rt | Ανάκληση | |||
SW2 | Add | rs | Extshft | Εγγραφή της ALU | Ανάγνωση του rt | Ανάκληση | ||
Rformat1 | Κωδικός Func | rs | rt | Seq | ||||
Κωδικός Func | rs | rt | rd | Ανάκληση | ||||
BEQ1 | Subt | rs | rt | Target - cond | Ανάκληση | |||
JUMP1 | διεύθυνση μεταπήδησης | Ανάκληση |
Σχήμα 3.4.14 - Το μικροπρόγραμμα για τη μονάδα ελέγχου. Τα επίπεδα που χρησιμοποιούνται για να καθοριστούν οι λειτουργίες της αποστολής. Η αποστολή 1 (Dispatch 1) εκτελεί μεταπήδηση η οποία βασίζεται στον IR στο επίπεδο 1. Το PCWrite control καθορίζει αν πρόκειται να γίνει εγγραφή υπό συνθήκη στον PC. Υπάρχουν τρεις πιθανές τιμές για την εγγραφή στον PC: η έξοδος της ALU, το περιεχόμενο του καταχωρητή που της διεύθυνσης του στόχου διακλάδωσης (καταχωρητής Στόχος), και η διεύθυνση του στόχου μεταπήδησης, η οποία προέρχεται από το συνδυασμό των 26 λιγότερων σημαντικών ψηφίων της εντολής και του PC.
Το σχήμα 3.4.15 απεικονίζει ένα τρόπο με τον οποίο μπορούμε να υλοποιήσουμε το μικροπρόγραμμα. Σε αυτό το είδος υλοποίησης χρησιμοποιούνται συνδυαστικά κυκλώματα, που καθορίζουν την τιμή των γραμμών ελέγχου της διόδου δεδομένων, έτσι ώστε να γίνεται η επιλογή της επόμενης κατάστασης. Για την επιλογή της διεύθυνσης της επόμενης προς εκτέλεση μικροεντολής, χρησιμοποιούνται οι πίνακες αποστολής.
Σχήμα 3.4.15 - Η μικροπρογραμματιζόμενη μονάδα ελέγχου του MIPS. Η μονάδα ελέγχου χρησιμοποιεί συνδυαστικά κυκλώματα για να καθορίσει τη δίοδο δεδομένων μίας κατάστασης, καθώς επίσης και να καθορίσει την επιλογή της επόμενης προς εκτέλεση μικροεντολής. Η επιλογή της επόμενης διεύθυνσης περιέχει τους πίνακες αποστολής για την επιλογή των επόμενων καταστάσεων: ο έλεγχος για την επιλογή της επόμενης μικροεντολής γίνεται από τις εξόδους της μονάδας ελέγχου.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 5
ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 5 ΔΡΑΣΤΗΡΙΟΤΗΤΑ 6