Πίσω

Παράδειγμα

   Υποθέστε ότι το αρχείο καταχωρητών FP έχει μόνο μια θύρα εγγραφής, ακολουθίες FP λειτουργιών, όπως επίσης και μια FP φόρτωση μαζί με FP λειτουργίες. Όλα αυτά μπορούν να προκαλέσουν συγκρούσεις στη θύρα εγγραφής καταχωρητών. Παρατηρήστε την ακολουθία σωλήνωσης του σχήματος 1.8.5. Στο κύκλο ρολογιού 11, και οι τρεις εντολές θα φτάσουν στο στάδιο WB και θα θέλουν να γράψουν στο αρχείο καταχωρητών. Με μία μόνο θύρα εγγραφής στο αρχείο καταχωρητών, ο υπολογιστής πρέπει να ταξινομήσει κατά σειρά την ολοκλήρωση των εντολών. Αυτή η μοναδική θύρα καταχωρητών αντιπροσωπεύει ένα κατασκευαστικό κίνδυνο.

Απάντηση

   Προτεινόμενες λύσεις και παρατηρήσεις για το παραπάνω πρόβλημα

Λύση 1η :
Θα μπορούσαμε να αυξήσουμε τον αριθμό των θυρών εγγραφής.

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

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

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

Σχήμα 1.8.6 - Μία τυπική ακολουθία FP κώδικα που δείχνει τις καθυστερήσεις που προκαλούνται από κινδύνους RAW. Η μακρύτερη FP σωλήνωση αυξάνει σημαντικά τη συχνότητα των καθυστερήσεων έναντι της ρηχότερης σωλήνωσης ακεραίων. Κάθε εντολή σε αυτή την ακολουθία εξαρτάται από τη προηγούμενη και προχωρεί μόλις υπάρχουν διαθέσιμα δεδομένα, υποθέτοντας ότι η σωλήνωση έχει πλήρη παράκαμψη (bypassing) και προώθηση (forwarding). Σημειώστε ότι η εντολή SD (αποθήκευσης αριθμού FP διπλής ακριβείας) έχει το στάδιο ΜΕΜ της ταυτόχρονα με την ADDD, αλλά εφόσον αυτές οι εντολές είναι σε διαφορετικές σωληνώσεις και η εντολή SD έχει τα δεδομένα της, ο συγχρονισμός αυτός θα δουλέψει σωστά.

Λύση 3η :
Η τελευταία λύση είναι να καθυστερήσουμε μια εντολή, η οποία προκαλεί σύγκρουση, όταν προσπαθεί να εισέλθει στο στάδιο ΜΕΜ. Αν, λοιπόν, περιμένουμε να καθυστερήσουμε τις εντολές, οι οποίες προκαλούν συγκρούσεις έως ότου θελήσουν να εισέλθουν στο στάδιο ΜΕΜ, μπορούμε να επιλέξουμε να καθυστερήσουμε οποιαδήποτε εντολή. Μια απλή, αν και μερικές φορές όχι ιδανική, λύση είναι να δίνουμε προτεραιότητα στη μονάδα με τη μεγαλύτερη αδράνεια, καθώς αυτή είναι η πιθανότερη να έχει προκαλέσει τη καθυστέρηση μιας άλλης εντολής για ένα κίνδυνο RAW.

Παρατηρήσεις:
Το πλεονέκτημα αυτής της λύσης είναι ότι δεν απαιτεί από εμάς να εντοπίζουμε τη σύγκρουση ως την είσοδο του σταδίου ΜΕΜ, όπου είναι εύκολο να τη δούμε. Το μειονέκτημα είναι ότι περιπλέκει τον έλεγχο σωλήνωσης, καθώς καθυστερήσεις μπορούν τώρα να προκύπτουν από δύο μεριές. Σημειώστε ότι η καθυστέρηση πριν την είσοδο στο στάδιο ΜΕΜ θα δημιουργήσει καθυστέρηση στο στάδιο ΕΧ( Α4 ή 7), πιθανώς αναγκάζοντας τη καθυστέρηση να πηγαίνει προς τα πίσω στη σωλήνωση.