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

Πως χωρίζεται η εκτέλεση των εντολών σε κύκλους ρολογιού

Δεδομένης της διόδου δεδομένων του σχήματος 3.2.30, πρέπει να εξετάσουμε τι συμβαίνει σε κάθε κύκλο ρολογιού στην εκτέλεση των εντολών με πολλούς κύκλους, αφού αυτό καθορίζει τα επιπλέον κυκλώματα της διόδου δεδομένων (για παράδειγμα τους προσωρινούς καταχωρητές) και τα επιπλέον σήματα ελέγχου που πιθανόν να χρειαστούν.

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

  1. Το σήμα υπολογίζεται σε ένα κύκλο ρολογιού και χρησιμοποιείται σε έναν άλλο κύκλο ρολογιού.
  2. Το κύκλωμα που έχει σαν έξοδο το σήμα, μπορεί να αλλάξει πριν την εγγραφή του σήματος σε ένα στοιχείο μνήμης.

Παραδείγματος χάριν, χρειάζεται να αποθηκεύσουμε την εντολή στον καταχωρητή εντολών, επειδή η μνήμη η οποία παράγει την τιμή, αλλάζει την έξοδο πριν ολοκληρωθεί η χρήση όλων των πεδίων της εντολής. Απ' την άλλη πλευρά, όταν χρησιμοποιείται η ALU στις εντολές τύπου R, δεν χρειάζεται να αποθηκεύσουμε την έξοδο, ακόμα και αν δεν χρησιμοποιήσουμε την έξοδο μέχρι τον επόμενο κύκλο ρολογιού. Αυτό συμβαίνει επειδή η έξοδος της ALU δεν αλλάζει (είναι σταθερή) κατά την διάρκεια του κύκλου ρολογιού, όταν γράφεται στο αρχείο καταχωρητών. Η έξοδος της ALU είναι σταθερή επειδή οι είσοδοί της που προέρχονται από το αρχείο καταχωρητών και η έξοδος του αρχείου καταχωρητών, καθορίζονται από τα πεδία rs και rt του καταχωρητή εντολών, ο οποίος είναι σταθερός επειδή είναι ένα στοιχείο μνήμης που εγγράφεται μόνο μία φορά κατά την διάρκεια εκτέλεσης μιας εντολής. Έτσι οι λειτουργικές μονάδες, από το αρχείο καταχωρητών μέχρι και την ALU, αποτελούν ένα τμήμα συνδυαστικής λογικής, του οποίου οι είσοδοι προέρχονται από τον καταχωρητή εντολών (ο οποίος είναι στοιχείο μνήμης), και οι έξοδοι γράφονται στο αρχείο καταχωρητών (που είναι επίσης στοιχείο μνήμης). Η δομή αυτή μοιάζει με τη δομή του σχήματος 3.2.2. Παρ' όλο που η υλοποίηση ενός κύκλου χρησιμοποιούσε πάντα στοιχεία μνήμης στα οποία γινόταν εγγραφή σε κάθε κύκλο ρολογιού (όπως στο σχήμα 3.2.3), η υλοποίηση πολλών κύκλων θα κάνει εγγραφή στα στοιχεία μνήμης επιλεκτικά, όπως στο σχήμα 3.2.2.

Ο στόχος μας για να χωρίσουμε την εκτέλεση των εντολών σε κύκλους ρολογιού, είναι να ισορροπηθεί ο αριθμός των λειτουργιών που εκτελούνται σε ένα κύκλο ρολογιού, έτσι ώστε να μειωθεί ο χρόνος κύκλου ρολογιού. Μπορούμε να χωρίσουμε την εκτέλεση των εντολών σε πέντε βήματα, κάθε ένα από τα οποία να χρειάζεται ένα κύκλο ρολογιού, περίπου του ίδιου μήκους. Για παράδειγμα, θα περιορίσουμε κάθε βήμα έτσι ώστε να περιέχει το πολύ μία λειτουργία της ALU, ή μία προσπέλαση στο αρχείο καταχωρητών, ή μία προσπέλαση στη μνήμη. Με αυτόν τον περιορισμό ο κύκλος ρολογιού μπορεί να είναι τόσο μικρός όσο η μεγαλύτερη από αυτές τις λειτουργίες.

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

Σύμφωνα με τα παραπάνω θα περιορίσουμε κάθε βήμα εκτέλεσης μιας εντολής, έτσι ώστε να περιέχει το πολύ μία λειτουργία της ALU, ή μία προσπέλαση στο αρχείο καταχωρητών, ή μία προσπέλαση στη μνήμη. Μπορείτε να απαριθμήσετε τα βήματα στα οποία θα χωρίσουμε την εκτέλεση των εντολών;

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


Σε μία δίοδο δεδομένων ενός κύκλου η κάθε εντολή πρέπει να χρησιμοποιεί ένα σύνολο κυκλωμάτων για την εκτέλεσή της. Πολλά από τα κυκλώματα της διόδου δεδομένων λειτουργούν σε σειρά, χρησιμοποιώντας σαν είσοδο, την έξοδο κάποιου άλλου κυκλώματος. Κάποια άλλα κυκλώματα της διόδου δεδομένων λειτουργούν παράλληλα. Για παράδειγμα, η αύξηση του απαριθμητή προγράμματος και η ανάγνωση της εντολής γίνονται ταυτόχρονα. Κάτι παρόμοιο γίνεται και στην δίοδο δεδομένων πολλών κύκλων. Όλες οι λειτουργίες που γίνονται σε ένα βήμα, γίνονται παράλληλα σε ένα κύκλο ρολογιού, ενώ τα διαδοχικά βήματα λειτουργούν σε σειρά και σε διαφορετικούς κύκλους ρολογιού. Ο περιορισμός σε μία λειτουργία της ALU, ή σε μία προσπέλαση του αρχείου καταχωρητών, ή σε μία προσπέλαση της μνήμης, καθορίζει τη λειτουργία που μπορεί να γίνει σε ένα βήμα.

Παρακάτω δίνονται τα πέντε βήματα και η δράση τους.

  1. Βήμα ανάκλησης της εντολής
  2. Βήμα αποκωδικοποίησης της εντολής και ανάκλησης των καταχωρητών
  3. Βήμα εκτέλεσης της εντολής, υπολογισμού της διεύθυνσης μνήμης ή ολοκλήρωσης της εντολής διακλάδωσης
  4. Βήμα πρόσβασης στη μνήμη ή ολοκλήρωσης των εντολών τύπου R
  5. Βήμα επανεγγραφής

Η σειρά των πέντε αυτών βημάτων συνοψίζεται στο σχήμα 3.2.32.

Βήμα Εντολές τύπου R Εντολές αναφοράς στη μνήμη Εντολές διακλάδωσης με συνθήκη
Ανάκληση εντολής
IR = Memory[PC]

PC = PC + 4 ;
Aποκωδικοποίησης εντολής / ανάκληση καταχωρητών
A = Registers[IR[25-21]]

B = Registers[IR[20-16]]

Target = PC + (sign-extend(IR[15-0]) << 2)
Eκτέλεση εντολών, υπολογισμός διεύθυνσης ή ολοκλήρωσης των εντολών διακλάδωσης
ALUoutput = A op B
ALUoutput = A + sign-extend(IR[15-0])
if (A = = B) then PC = Target
Προσπέλαση της μνήμης ή ολοκλήρωση των εντολών τύπου R
Reg[IR[15-11]] = ALUoutput
memory-data = Memory[ALUouput]

or

Memory[ALUouput] = B
.
Επανεγγραφή
.
Reg[IR[20-16]] = memory-data
.

Σχήμα 3.2.32 - Τα βήματα εκτέλεσης των διαφορετικών τύπων εντολών. Οι εντολές χρειάζονται από τρία έως πέντε βήματα για να εκτελεστούν. Τα δύο πρώτα βήματα είναι ανεξάρτητα από τον τύπο της εντολής.


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

Ποια είναι τα πέντε βήματα εκτέλεσης των εντολών; Να αναφέρετε συνοπτικά τη λειτουργία των εντολών σε κάθε ένα από αυτά.

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

Ποιο είναι το αποτέλεσμα της εκτέλεσης των παρακάτω εντολών του MIPS;
α) add $s1, $s2, $s3
β) lw $s1, 100($s2)
γ) beq $s4, $s5, L

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

Από αυτή την ακολουθία βημάτων μπορούμε να προσδιορίσουμε το τι πρέπει να κάνει η μονάδα ελέγχου σε κάθε κύκλο ρολογιού. Πριν όμως σχεδιάσουμε την μονάδα ελέγχου, πρέπει να προσθέσουμε το τμήμα της μονάδας ελέγχου εγγραφής του απαριθμητή προγράμματος και τους απαραίτητους πολυπλέκτες για την επιλογή της σωστής τιμής που θα εγγραφεί στον απαριθμητή προγράμματος, καθώς επίσης και το τμήμα που αφορά τον καταχωρητή Στόχο. Αφού η υλοποίηση των εντολών μεταπήδησης έχει σχέση με αυτές τις δυνατότητες, θα ενσωματώσουμε την μονάδα ελέγχου για τις εντολές μεταπήδησης μαζί με τις άλλες μονάδες ελέγχου. Εάν συμπεριλάβουμε και τις εντολές μεταπήδησης, υπάρχουν τρεις πιθανές πηγές της τιμής η οποία θα εγγραφεί στον απαριθμητή προγράμματος. Αυτές είναι:

Το ALUoutput, το οποίο είναι η πηγή όταν ο απαριθμητής προγράμματος έχει αυξηθεί κατά την σειριακή ανάκληση των εντολών.

Ο καταχωρητής Στόχος, όταν έχουμε εντολή διακλάδωσης υπό συνθήκη. Επίσης χρειαζόμαστε ένα σήμα για εγγραφή στον καταχωρητή, που ονομάζεται TargetWrite.

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

Κωδικοποιούμε αυτές τις τρεις πιθανές πηγές χρησιμοποιώντας ένα σήμα ελέγχου των δύο ψηφίων, το PCSource. Οι τρεις πιθανές πηγές κωδικοποιούνται ως εξής: ALUoutput(00), Traget(01) και IR(10) αντίστοιχα. Το σήμα PCSource τότε ελέγχει έναν πολυπλέκτη των τριών εισόδων.

Όπως έχουμε παρατηρήσει, όταν υλοποιούμε την μονάδα ελέγχου του ενός κύκλου, στον απαριθμητή προγράμματος γίνεται εγγραφή με δύο διαφορετικούς τρόπους. Εάν η εντολή δεν είναι διακλάδωση υπό συνθήκη (beq), η τιμή του απαριθμητή προγράμματος δεν εξαρτάται από την συνθήκη. Εάν έχουμε εντολή διακλάδωσης υπό συνθήκη, ο αυξημένος απαριθμητής προγράμματος αντικαθίσταται με την τιμή του καταχωρητή Στόχου, μόνο εάν ισχύει η συνθήκη στην οποία η έξοδος 0 της ALU είναι επίσης ενεργή. Έτσι χρειαζόμαστε δύο σήματα εγγραφής του απαριθμητή προγράμματος, τα οποία ονομάζουμε PCWrite και PCWriteCond. To σήμα PCWriteCond και το σήμα 0 της ALU συνδέονται με μία πύλη ΚΑΙ, η οποία συνδέεται μετά με το σήμα PCWrite για να δημιουργηθεί ένα σήμα εγγραφής για τον απαριθμητή προγράμματος.

Το σχήμα 3.2.33 απεικονίζει την ολοκληρωμένη δίοδο δεδομένων πολλών κύκλων και την μονάδα ελέγχου, μαζί με τα επιπλέον σήματα ελέγχου, τον καταχωρητή Στόχο και τον πολυπλέκτη για την ενημέρωση του απαριθμητή προγράμματος. Το σχήμα 3.2.34 απεικονίζει τα αποτελέσματα των επιπλέον σημάτων ελέγχου. Μαζί με το σχήμα 3.2.31 οι πίνακες αυτοί καθορίζουν τα αποτελέσματα όλων των σημάτων ελέγχου στην δίοδο δεδομένων των πολλών κύκλων του σχήματος 3.2.33.

Σχήμα 3.2.33 - Η ολοκληρωμένη δίοδος δεδομένων στη υλοποίηση πολλών κύκλων μαζί με τις απαραίτητες γραμμές ελέγχου. Οι γραμμές ελέγχου του σχήματος 3.2.30 είναι προσαρτημένες στην μονάδα ελέγχου. Επίσης στο σχήμα περιλαμβάνονται τα κυκλώματα ελέγχου και της διόδου δεδομένων που καθορίζουν τις αλλαγές του απαριθμητή προγράμματος. Οι βασικές αλλαγές από το σχήμα 3.2.30 περιλαμβάνουν: τον καταχωρητή Στόχο (στην πάνω δεξιά γωνία), τον πολυπλέκτη τριών εισόδων για την επιλογή της πηγής της ενημερωμένης τιμής του απαριθμητή προγράμματος (πάνω δεξιά), δύο πύλες για την σύνδεση των σημάτων εγγραφής του απαριθμητή προγράμματος, και τα σήματα ελέγχου PCsourse, PCWrite, PCWriteCond και TargetWrite.

Σήμα ελέγχου Επίδραση όταν
δεν είναι ενεργό
Επίδραση όταν
είναι ενεργό
PCWrite
Τίποτα
Γίνεται εγγραφή στον απαριθμητή προγράμματος. Η πηγή ελέγχεται από το PCSource.
PCWriteCond
Τίποτα
Γίνεται εγγραφή στον απαριθμητή προγράμματος εάν η έξοδος 0 της ALU είναι επίσης ενεργή.
TargetWrite
Τίποτα
Η έξοδος της ALU γράφεται στον καταχωρητή Στόχο.

a. Οι επιδράσεις των επιπλέον σημάτων ελέγχου του ενός bit.

Σήμα ελέγχου Τιμή σήματος Αποτέλεσμα
PCSource
00
H έξοδος της ALU αποστέλλεται στον απαριθμητή προγράμματος για εγγραφή.
01
Το περιεχόμενο του καταχωρητή Στόχου αποστέλλεται στον απαριθμητή προγράμματος για εγγραφή.
10
Η διεύθυνση του στόχου μεταπήδησης (PC + 4[29-26] συνδεδεμένη με IR[25-0] και ολισθημένη προς τα αριστερά κατά δύο ψηφία), αποστέλλεται στον απαριθμητή προγράμματος για εγγραφή.

b. Οι επιδράσεις του επιπλέον σήματος ελέγχου των δύο bits, του PCSource.

Σχήμα 3.2.34 - Οι επιδράσεις των σημάτων ελέγχου, τα οποία καθορίζουν τον τρόπο με τον οποίο γίνονται οι εγγραφές στον απαριθμητή προγράμματος. Το σχήμα αυτό μαζί με το σχήμα 3.2.31 προσδιορίζει τις λειτουργίες όλων των σημάτων ελέγχου στην υλοποίηση πολλών κύκλων της διόδου δεδομένων.