Κεφάλαιο 3 | Ενότητα 4 | Επόμενο | Προηγούμενο | Λεξικό όρων

Δημιουργία του μικροπρογράμματος

Για τη δημιουργία του μικροπρογράμματος της μονάδας ελέγχου, χωρίζουμε τις εντολές του μικροπρογράμματος σε επίπεδα. Τα επίπεδα αυτά μπορούν να χρησιμοποιηθούν για να καθορίσουν τα περιεχόμενα στους πίνακες αποστολής. Στο μικροπρόγραμμα υπάρχουν δύο περιπτώσεις στις οποίες το πεδίο μίας εντολής μπορεί να είναι κενό. Όταν το πεδίο το οποίο ελέγχει τη μονάδα λειτουργίας, ή το πεδίο το οποίο προκαλεί την εγγραφή της κατάστασης (όπως το πεδίο Μνήμης ή το πεδίο 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

Η επόμενη μικροεντολή στη σειρά (LW2) έχει τα ακόλουθα πεδία:

Πεδίο Αποτέλεσμα
Μονάδα ελέγχου 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 και στη δεύτερη γίνεται εγγραφή του αποτελέσματος στο αρχείο καταχωρητών.

Μικροεντολές για τις εντολές τύπου R:

Επίπεδο Μονάδα ελέγχου της 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

Να αναφέρετε τα πλεονεκτήματα και τα μειονεκτήματα του μικροπρογραμματισμού. Να αιτιολογήσετε την απάντησή σας.

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 6