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


Η βασική σωλήνωση για τον DLX

 

Για να υλοποιήσουμε την τεχνική της σωλήνωσης στον υπολογιστή DLX, πρέπει να τροποποιηθεί η εκτέλεση των εντολών του.

 

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

Θυμάστε ποια είναι τα πέντε στάδια εκτέλεσης μιας εντολής από τον υπολογιστή DLX; Να αναφέρετε επιγραμματικά τα πέντε βήματα εκτέλεσης μιας εντολής από τον υπολογιστή DLX. Για περισσότερες λεπτομέρειες, θα ήταν καλό να ανατρέξετε στις σημειώσεις της «Αρχιτεκτονικής Υπολογιστών Ι» και συγκεκριμένα στο τρίτο κεφάλαιο: «Κεντρική Μονάδα Επεξεργασίας».

 

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


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

 

  1. Ανάκληση εντολής (IF)
  2. Στο πρώτο βήμα εκτέλεσης της εντολής γίνεται αποστολή του περιεχομένου του απαριθμητή προγράμματος (PC) στη μνήμη εντολών. Στη συνέχεια γίνεται ανάγνωση στο περιεχόμενο του PC, το οποίο είναι μια διεύθυνση. Η εντολή που αντιστοιχεί στη διεύθυνση αυτή ανακαλείται και τοποθετείται στον καταχωρητή εντολών (IR) . Ο PC αυξάνεται κατά 4 και δείχνει τη διεύθυνση της επόμενης εντολής. Στον καταχωρητή NPC φυλάσσεται η νέα τιμή του PC, δηλαδή αυτή η οποία προέκυψε μετά από την αύξηση.

    IR <- Mem[PC]

    NPC<- PC + 4

     

  3. Αποκωδικοποίηση εντολής / Ανάκληση των καταχωρητών (ID)
  4. Στο δεύτερο βήμα γίνεται αποκωδικοποίηση της εντολής. Στη συνέχεια γίνεται πρόσβαση στο αρχείο καταχωρητών για διάβασμα του περιεχομένου τους. Το περιεχόμενο (δηλαδή οι πηγαίοι τελεστέοι) των καταχωρητών τοποθετείται στους μανταλωτές Α και Β. Συνεπώς, στο σημείο αυτό, ο μανταλωτής Α περιέχει τον έναν πηγαίο τελεστέο κι ο μανταλωτής Β περιέχει τον άλλον πηγαίο τελεστέο. Το περιεχόμενο των μανταλωτών Α και Β θα χρησιμοποιηθεί σε επόμενους κύκλους ρολογιού. Στον καταχωρητή προσωρινής αποθήκευσης Imm φυλάσσονται τα 16 λιγότερο σημαντικά ψηφία του IR για χρήση στον επόμενο κύκλο μετά από την επέκταση προσήμου.

    A <-Regs[IR 6..10];

    B<- Regs[IR11..15];

                           16

    Imm <- ((IR 16)##IR 16..31)

     

  5. Εκτέλεση EX)
  6. Στο τρίτο βήμα η 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)

     

  7. Πρόσβαση στην μνήμη / Βήμα ολοκλήρωσης διακλάδωσης (MEM)

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

      Α) Επικοινωνία με τη μνήμη (εντολές φόρτωσης ή εντολές αποθήκευσης):

      Αν έχουμε εντολή φόρτωσης, τα δεδομένα επιστρέφουν από τη μνήμη και τοποθετούνται στον καταχωρητή LMD.

     LMD <- Mem[ALUOutput]

     Αν έχουμε εντολή αποθήκευσης, τότε τα δεδομένα από τον μανταλωτή Β γράφονται στη μνήμη.

      Mem[ALUOutput] <- B

     Και στις δύο παραπάνω περιπτώσεις η διεύθυνση μνήμης, από την οποία φορτώνονται τα δεδομένα ή στην οποία αποθηκεύονται τα δεδομένα, είναι εκείνη που υπολογίστηκε κατά τη διάρκεια του προηγούμενου κύκλου κι αποθηκεύτηκε στον καταχωρητή ALUOutput.

     Β) Εντολή διακλάδωσης:

     Αν η συνθήκη διακλάδωσης ισχύει, τότε ο PC φορτώνεται με τη διεύθυνση του στόχου διακλάδωσης, η οποία βρίσκεται στον καταχωρητή ALUOutput.

     Αν η συνθήκη διακλάδωσης δεν ισχύει τότε ο PC φορτώνεται με την τιμή η οποία βρίσκεται στον NPC.

     If (cond) PC <- ALUOutput else PC <- NPC

 

      5. Επανεγγραφή (WB)

      Στο βήμα αυτό γίνεται εγγραφή του αποτελέσματος στο αρχείο καταχωρητών,

      είτε αυτό προέρχεται από τη μονάδα μνήμης, δηλαδή τον καταχωρητή LMD

      Regs[IR11..15] <- LMD

      είτε από την ALU, δηλαδή από τον καταχωρητή ALUOutput. Διακρίνουμε δύο περιπτώσεις. Αν η εντολή είναι:

  1.       Εντολή μεταξύ καταχωρητή - καταχωρητή τότε
  2.       Regs[IR 16..20] <- ALUOutput

     

  3.       Εντολή μεταξύ καταχωρητή- Imm τότε

      Regs[IR11..15 ] <- ALUOutput