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

Πως σχεδιάζουμε τη βασική μονάδα ελέγχου ενός κύκλου (συνέχεια)

Ας ξεκινήσουμε με τις εντολές τύπου R όπως για παράδειγμα η:

add $x, $y, $z.

Τα τέσσερα βήματα για την εκτέλεση μιας εντολής τύπου R είναι:

  1. H εντολή ανακαλείται από τη μνήμη εντολών και ο απαριθμητής προγράμματος αυξάνεται.
  2. Oι δύο καταχωρητές, $x και $y, διαβάζονται από το αρχείο καταχωρητών. Επίσης κατά τη διάρκεια αυτού του βήματος, η βασική μονάδα ελέγχου υπολογίζει τον τρόπο ενεργοποίησης των γραμμών ελέγχου.
  3. H ALU επεξεργάζεται τα δεδομένα τα οποία διαβάστηκαν από το αρχείο καταχωρητών, χρησιμοποιώντας τον κωδικό function (τα ψηφία 0-5 της εντολής), που περιγράφει τη λειτουργία της ALU.
  4. Το αποτέλεσμα της ALU γράφεται στο αρχείο καταχωρητών, χρησιμοποιώντας τα ψηφία 15-11 της εντολής, για την επιλογή του καταχωρητή προορισμού ($x).

Υπενθυμίζουμε πως η εφαρμογή αυτή χρησιμοποιεί τη συνδυαστική λογική. Δηλαδή οι εντολές τύπου R δεν εκτελούνται σαν μια σειρά από τέσσερα διαφορετικά βήματα. Η δίοδος δεδομένων λειτουργεί σε ένα κύκλο ρολογιού, και τα σήματα στη δίοδο δεδομένων μεταβάλλονται απρόβλεπτα κατά τη διάρκεια αυτού του κύκλου. Τα σήματα σταθεροποιούνται περίπου με τη σειρά των βημάτων της εντολής, επειδή η ροή της πληροφορίας ακολουθεί αυτή την πορεία.

Η εκτέλεση των εντολών φόρτωσης όπως για παράδειγμα η:

lw $s, offset($y)
μπορεί να χωριστεί σε πέντε διαφορετικά βήματα (σε αντιστοιχία με τα τέσσερα βήματα των εντολών τύπου R).

Τα πέντε βήματα για την εκτέλεση μιας εντολής φόρτωσης είναι:

  1. Η εντολή ανακαλείται από τη μνήμη εντολών και αυξάνεται ο απαριθμητής προγράμματος.
  2. Η τιμή του καταχωρητή ($y) διαβάζεται από το αρχείο καταχωρητών.
  3. Η ALU υπολογίζει το άθροισμα της τιμής που διάβασε από το αρχείο καταχωρητών και των 16 λιγότερο σημαντικών ψηφίων της εντολής (offset), μετά από επέκταση προσήμου.
  4. Το άθροισμα που υπολογίζεται από την ALU, χρησιμοποιείται στην είσοδο της διεύθυνσης στη μνήμη δεδομένων.
  5. Τα δεδομένα από τη μονάδα μνήμης γράφονται στο αρχείο καταχωρητών. Ο καταχωρητής προορισμού δίνεται από τα bits 20-16 της εντολής ($x).

Τέλος μπορούμε να χωρίσουμε σε βήματα την εκτέλεση των εντολών διακλάδωσης με συνθήκη όπως για παράδειγμα η:

beq $x, $y, offset.
Οι εντολές αυτές λειτουργούν περίπου όπως οι εντολές τύπου R, αλλά η έξοδος της ALU χρησιμοποιείται για να καθορίσει την επόμενη τιμή του απαριθμητή προγράμματος που είναι PC +4, ή είναι η διεύθυνση του στόχου διακλάδωσης.

Τα τέσσερα βήματα της εκτέλεσης των εντολών διακλάδωσης με συνθήκη είναι:

  1. Η εντολή ανακαλείται από τη μνήμη και αυξάνεται ο απαριθμητής προγράμματος.
  2. Οι δύο καταχωρητές, $x και $y, διαβάζονται από το αρχείο καταχωρητών.
  3. Η ALU εκτελεί αφαίρεση στις τιμές των δεδομένων που διάβασε από το αρχείο καταχωρητών. Η τιμή του PC + 4 προστίθεται στα 16 λιγότερο σημαντικά ψηφία της εντολής (offset), μετά από επέκταση προσήμου. Το αποτέλεσμα είναι η διεύθυνση του στόχου διακλάδωσης.
  4. Η έξοδος 0 της ALU χρησιμοποιείται για την επιλογή της επόμενης τιμής του απαριθμητή προγράμματος.

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 15

α) Να περιγράψετε περιληπτικά τα επιμέρους βήματα για την εκτέλεση των εντολών τύπου R, των εντολών φόρτωσης και των εντολών διακλάδωσης με συνθήκη;
β) Για ποιο λόγο χωρίζουμε την εκτέλεση των εντολών σε βήματα;

Αφού είδαμε τον τρόπο με τον οποίο οι εντολές χωρίζονται σε βήματα, θα συνεχίσουμε με την υλοποίηση του ελέγχου. Η λειτουργία του ελέγχου μπορεί να προσδιοριστεί χρησιμοποιώντας τα περιεχόμενα του σχήματος 3.2.23. Οι έξοδοι είναι οι γραμμές ελέγχου και η είσοδος είναι το πεδίο του κωδικού λειτουργίας (opcode), Op[5-0]. Έτσι μπορούμε να φτιάξουμε ένα πίνακα αληθείας για κάθε έξοδο. Πριν από αυτό ας γράψουμε την κωδικοποίηση για κάθε ένα από τους κωδικούς λειτουργίας που μας ενδιαφέρουν από το σχήμα 3.2.23, και με δεκαδικούς αριθμούς και σαν μια σειρά από bits, τα οποία είναι είσοδος στην μονάδα ελέγχου:

Όνομα εντολής Κωδικός λειτουργίας
σε δεκαδική μορφή
Κωδικός λειτουργίας
σε δυαδική μορφή
Op5
Op4
Op3
Op2
Op1
Op0
Τύπου R
0
0
0
0
0
0
0
lw
35
1
0
0
0
1
1
sw
43
1
0
1
0
1
1
beq
4
0
0
0
1
0
0

Εάν χρησιμοποιήσουμε αυτόν τον πίνακα, μπορούμε να περιγράψουμε λογικά τη μονάδα ελέγχου σε έναν μεγάλο πίνακα αληθείας που περιέχει όλες τις εξόδους, όπως γίνεται στο σχήμα 3.2.24. Αυτός ο πίνακας καθορίζει ακριβώς την συνάρτηση ελέγχου και μπορούμε να τον υλοποιήσουμε κατ' ευθείαν σε πύλες όπως ακριβώς κάναμε και με την μονάδα ελέγχου της ALU.

Τύπου R lw sw beq
Είσοδοι
Op5
0
1
1
0
Op4
0
0
0
0
Op3
0
0
1
0
Op2
0
0
0
1
Op1
0
1
1
0
Op0
0
1
1
0
Έξοδοι
RegDst
1
0
X
X
ALUSrc
0
1
1
0
MemtoReg
0
1
X
X
RegWrite
1
1
0
0
MemRead
0
1
0
0
MemWrite
0
0
1
0
Branch
0
0
0
1
ALUOp1
1
0
0
0
ALUOp0
0
0
0
1

Σχήμα 3.2.24 - Η συνάρτηση ελέγχου όταν οι εντολές εκτελούνται σε έναν κύκλο ρολογιού, καθορίζεται πλήρως από αυτόν τον πίνακα. Στον πίνακα φαίνονται οι συνδυασμοί των σημάτων εισόδου που αντιστοιχούν στους τέσσερις κωδικούς λειτουργίας που καθορίζουν τις εξόδους. (Θυμηθείτε πως το Op[5-0] αντιστοιχεί στα ψηφία 31-26 της εντολής, τα οποία είναι το πεδίο του κωδικού λειτουργίας(opcode).) Μετά τις εισόδους, στον πίνακα δίνονται οι έξοδοι. Έτσι η έξοδος RegWrite είναι ενεργή για δύο διαφορετικούς συνδυασμούς των εισόδων. Εάν θεωρήσουμε μόνο τους τέσσερις κωδικούς λειτουργίας που φαίνονται στον πίνακα, μπορούμε να απλοποιήσουμε τον πίνακα αληθείας χρησιμοποιώντας αδιάφορους όρους. Για παράδειγμα, μπορούμε να βρούμε μια εντολή τύπου R με τη βοήθεια της εξίσωσης Op5 * Op2, αφού αυτό είναι αρκετό για να ξεχωρίσουμε τις εντολές τύπου R από τις εντολές φόρτωσης (lw), αποθήκευσης (sw) και διακλάδωσης(beq). Δεν εκμεταλλευόμαστε αυτή την απλοποίηση αφού οι υπόλοιποι κωδικοί λειτουργίας του υπολογιστή MIPS χρησιμοποιούνται στην τελική υλοποίηση.

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 16

Να υλοποιήσετε τη συνάρτηση ελέγχου του σχήματος 3.2.24 χρησιμοποιώντας λογικές πύλες ΚΑΙ και λογικές πύλες Ή. Να συγκρίνετε την απάντησή σας με το σχήμα που ακολουθεί (σχήμα 3.2.25).

Η υλοποίηση της συνάρτησης ελέγχου δεν είναι πολύπλοκη. Το σχήμα 3.2.25 απεικονίζει τη συνάρτηση ελέγχου υλοποιημένη με πύλες ΚΑΙ και πύλες Ή σε παράταξη. Αυτή η δομή ονομάζεται προγραμματιζόμενη λογική παράταξη ή PLA (Programmable Logic Array). H χρήση κυκλωμάτων PLA είναι μία από τις πιο γνωστές μεθόδους για να υλοποιήσουμε την συνάρτηση ελέγχου.

Σχήμα 3.2.25 - Η υλοποίηση της συνάρτησης ελέγχου σύμφωνα με τον πίνακα αληθείας του σχήματος 3.2.24. Οι είσοδοι στις πύλες ΚΑΙ είναι οι είσοδοι της συνάρτησης και τα συμπληρώματά τους. Οι είσοδοι στις πύλες Ή είναι οι έξοδοι των πυλών ΚΑΙ (ή είναι οι είσοδοι της συνάρτησης και τα συμπληρώματά τους). Η έξοδος των πυλών Ή είναι οι έξοδοι της συνάρτησης.

Παράδειγμα
Το σχήμα 3.2.22 περιλαμβάνει την υλοποίηση των εντολών τύπου R, των εντολών φόρτωσης ή αποθήκευσης και των εντολών διακλάδωσης. Να επεκτείνεται κατάλληλα το σχήμα 3.2.22 έτσι ώστε να περιλαμβάνει και τις εντολές μεταπήδησης (jump). Να περιγράψετε πως θα τοποθετηθούν οι καινούριες γραμμές ελέγχου.

Απάντηση
Η εντολή μεταπήδησης μοιάζει με την εντολή διακλάδωσης, με τη διαφορά ότι υπολογίζει την επόμενη τιμή του απαριθμητή προγράμματος διαφορετικά και ότι δεν λειτουργεί υπό συνθήκη. Όπως και στη διακλάδωση, τα 2 λιγότερα σημαντικά ψηφία της διεύθυνσης της εντολής μεταπήδησης είναι πάντα 00two. Τα επόμενα λιγότερο σημαντικά 26 ψηφία από τα 32 ψηφία της διεύθυνσης, προέρχονται από το πεδίο της εντολής όπως φαίνεται στο σχήμα 3.2.26. Τα 4 περισσότερο σημαντικά ψηφία της διεύθυνσης, η οποία θα γίνει η επόμενη τιμή του απαριθμητή προγράμματος, προέρχονται από την τρέχουσα τιμή του απαριθμητή προγράμματος. Έτσι μπορούμε να υλοποιήσουμε μία εντολή μεταπήδησης, αποθηκεύοντας στον απαριθμητή προγράμματος διαδοχικά τα παρακάτω :

Πεδίο
2
address
Θέση των bits
31-26
25-0
Σχήμα 3.2.26 - Η μορφή της εντολής μεταπήδησης(κωδικός λειτουργίας=2).


Στο σχήμα 3.2.27 φαίνεται η μονάδα ελέγχου, έτσι ώστε να μπορεί να δέχεται και εντολές μεταπήδησης. Χρησιμοποιείται ένας επιπλέον πολυπλέκτης για να επιλέγει τη νέα τιμή του απαριθμητή προγράμματος (PC), η οποία θα είναι η αυξημένη κατά 4 τιμή του απαριθμητής προγράμματος (PC + 4), ή ο στόχος διακλάδωσης, ή ο στόχος μεταπήδησης. Επιπλέον χρειάζεται ένα σήμα ελέγχου για τον πολυπλέκτη που προσθέσαμε. Αυτό το σήμα ελέγχου, το οποίο ονομάζεται σήμα μεταπήδησης (jump), είναι ενεργό μόνο όταν υπάρχει εντολή μεταπήδησης, και αυτό συμβαίνει όταν ο κωδικός λειτουργίας είναι 2 (opcode = 2).

Σχήμα 3.2.27 - Η δίοδος δεδομένων και η μονάδα ελέγχου επεκταμένα κατά τέτοιο τρόπο έτσι ώστε να δέχονται τις εντολές μεταπήδησης. Έχει προστεθεί ένας πολυπλέκτης (πάνω δεξιά στο σχήμα), ο οποίος ελέγχεται από το σήμα ελέγχου μεταπήδησης. Η εντολή μεταπήδησης, σύμφωνα με τον σχεδιασμό των εντολών στον υπολογιστή MIPS, χρησιμοποιεί την τιμή του απαριθμητή προγράμματος [31-28] για την διεύθυνση του στόχου μεταπήδησης, αντί για την τιμή αυτών των bits, αφού έχει αυξηθεί ο απαριθμητής προγράμματος κατά 4.