Κεφάλαιο 1
|Ενότητα 1
|Ερωτήσεις
επισκόπησης |
Επόμενο
|Προηγούμενο
|Λεξικό όρων
Η βασική σωλήνωση για τον DLX
Για να υλοποιήσουμε την τεχνική της σωλήνωσης στον υπολογιστή DLX, πρέπει να τροποποιηθεί η εκτέλεση των εντολών του.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 3
Τα πέντε βασικά βήματα εκτέλεσης μιας εντολής από τον υπολογιστή DLX, έτσι ώστε να μπορεί να υλοποιηθεί η τεχνική της σωλήνωσης, πρέπει να τροποποιηθούν ως εξής:
Στο πρώτο βήμα εκτέλεσης της εντολής γίνεται αποστολή του περιεχομένου του απαριθμητή προγράμματος (PC) στη μνήμη εντολών. Στη συνέχεια γίνεται ανάγνωση στο περιεχόμενο του PC, το οποίο είναι μια διεύθυνση. Η εντολή που αντιστοιχεί στη διεύθυνση αυτή ανακαλείται και τοποθετείται στον καταχωρητή εντολών (IR) . Ο PC αυξάνεται κατά 4 και δείχνει τη διεύθυνση της επόμενης εντολής. Στον καταχωρητή NPC φυλάσσεται η νέα τιμή του PC, δηλαδή αυτή η οποία προέκυψε μετά από την αύξηση.
IR <- Mem[PC]
NPC
Στο δεύτερο βήμα γίνεται αποκωδικοποίηση της εντολής. Στη συνέχεια γίνεται πρόσβαση στο αρχείο καταχωρητών για διάβασμα του περιεχομένου τους. Το περιεχόμενο (δηλαδή οι πηγαίοι τελεστέοι) των καταχωρητών τοποθετείται στους μανταλωτές Α και Β. Συνεπώς, στο σημείο αυτό, ο μανταλωτής Α περιέχει τον έναν πηγαίο τελεστέο κι ο μανταλωτής Β περιέχει τον άλλον πηγαίο τελεστέο. Το περιεχόμενο των μανταλωτών Α και Β θα χρησιμοποιηθεί σε επόμενους κύκλους ρολογιού. Στον καταχωρητή προσωρινής αποθήκευσης Imm φυλάσσονται τα 16 λιγότερο σημαντικά ψηφία του IR για χρήση στον επόμενο κύκλο μετά από την επέκταση προσήμου. A <-Regs[IR 6..10];
B
<- Regs[IR11..15];16 Imm <- ((IR 16)##IR 16..31)
Στο τρίτο βήμα η ALU ενεργεί πάνω στους τελεστέους Α και Β ανάλογα με το είδος της εντολής, η οποία αποκωδικοποιήθηκε στον προηγούμενο κύκλο.
Αν η εντολή είναι:
Α)
Επικοινωνία με τη μνήμη (εντολές φόρτωσης ή εντολές αποθήκευσης)Η
ALU προσθέτει το περιεχόμενο του μανταλωτή Α με το περιεχόμενο του μανταλωτή Imm για να σχηματίσει την ενεργό διεύθυνση. Το αποτέλεσμα αυτής της πράξης τοποθετείται στον καταχωρητή ALUOutput.ALUOutput <- A + Imm;
Β) Εντολή μεταξύ καταχωρητή - καταχωρητή
Η ALU εκτελεί τη λειτουργία, η οποία προσδιορίζεται από τον κωδικό λειτουργίας, πάνω στην τιμή του μανταλωτή Α και σε εκείνη του μανταλωτή Β. Το αποτέλεσμα τοποθετείται στον καταχωρητή ALUOutput.
ALUOutput <- A op B;
Γ) Εντολή μεταξύ καταχωρητή-
ImmΗ ALU εκτελεί τη λειτουργία, η οποία προσδιορίζεται από τον κωδικό λειτουργίας, πάνω στην τιμή του μανταλωτή Α και σε εκείνη του καταχωρητή προσωρινής αποθήκευσης Imm. Το αποτέλεσμα τοποθετείται στον καταχωρητή ALUOutput.
ALUOutput
<- A op Imm;Δ) Εντολή διακλάδωσης με συνθήκη / Μεταπήδηση
Η ALU προσθέτει το περιεχόμενο του καταχωρητή NPC με το περιεχόμενο του καταχωρητή προσωρινής αποθήκευσης Imm για να υπολογίσει τη διεύθυνση του στόχου διακλάδωσης.
Ο μανταλωτής Α, ελέγχεται για να καθοριστεί αν η συνθήκη της διακλάδωσης αληθεύει. Ο τελεστής σύγκρισης
op καθορίζεται από τον κωδικό λειτουργίας της εντολής διακλάδωσης.Αν η εντολή διακλάδωσης με συνθήκη είναι
BEQZ, τότε η λειτουργία σύγκρισης είναι ο έλεγχος για ισότητα.Συνεπώς ο τελεστής
op είναι ο ''= =''.ALUOutput
<- NPC + Imm;Cond
<- (A op 0)
Οι μόνες εντολές του DLX που είναι ενεργές σε αυτόν τον κύκλο είναι οι εντολές φόρτωσης, οι εντολές αποθήκευσης και οι εντολές διακλάδωσης.
Α) Επικοινωνία με τη μνήμη (εντολές φόρτωσης ή εντολές αποθήκευσης):
Αν έχουμε εντολή φόρτωσης, τα δεδομένα επιστρέφουν από τη μνήμη και τοποθετούνται στον καταχωρητή
LMD.LMD <- Mem[ALUOutput]
Αν έχουμε εντολή αποθήκευσης, τότε τα δεδομένα από τον μανταλωτή Β γράφονται στη μνήμη.
Mem[ALUOutput] <- B
Και στις δύο παραπάνω περιπτώσεις η διεύθυνση μνήμης, από την οποία φορτώνονται τα δεδομένα ή στην οποία αποθηκεύονται τα δεδομένα, είναι εκείνη που υπολογίστηκε κατά τη διάρκεια του προηγούμενου κύκλου κι αποθηκεύτηκε στον καταχωρητή ALUOutput.
Β) Εντολή διακλάδωσης:
Αν η συνθήκη διακλάδωσης ισχύει, τότε ο PC φορτώνεται με τη διεύθυνση του στόχου διακλάδωσης, η οποία βρίσκεται στον καταχωρητή ALUOutput.
Αν η συνθήκη διακλάδωσης δεν ισχύει τότε ο PC φορτώνεται με την τιμή η οποία βρίσκεται στον NPC.
If (cond) PC
<- ALUOutput else PC <- NPC
5. Επανεγγραφή (WB)
Στο βήμα αυτό γίνεται εγγραφή του αποτελέσματος στο αρχείο καταχωρητών,
είτε αυτό προέρχεται από τη μονάδα μνήμης, δηλαδή τον καταχωρητή LMD
Regs[IR
11..15] <- LMDείτε
από την ALU, δηλαδή από τον καταχωρητή ALUOutput. Διακρίνουμε δύο περιπτώσεις. Αν η εντολή είναι:Regs[IR
16..20] <- ALUOutput
Regs[IR11..15 ] <- ALUOutput
|
|
|