1. Προώθηση δεδομένων (παράκαμψη):
* Μηχανισμός: Αυτή είναι η πιο συνηθισμένη και αποτελεσματική μέθοδος. Εάν το αποτέλεσμα μιας εντολής σε μεταγενέστερο στάδιο του αγωγού απαιτείται από μια εντολή σε προηγούμενο στάδιο, το αποτέλεσμα διαβιβάζεται απευθείας από το μεταγενέστερο στάδιο στο προηγούμενο στάδιο, παρακάμπτοντας την πρόσβαση στη μνήμη.
* Παράδειγμα: Ας υποθέσουμε ότι η διδασκαλία I1 γράφει να καταχωρήσει R1 και η διδασκαλία I2 διαβάζει από το R1. Η προώθηση δεδομένων θα στείλει την τιμή που γράφτηκε από το i1 απευθείας στο i2, εμποδίζοντας ένα περίπτερο, παρόλο που το i1 δεν έχει ολοκληρώσει τη εγγραφή του στη μνήμη.
* Αποτελεσματικότητα: Εξαιρετικά αποτελεσματική για την επίλυση ακατέργαστων κινδύνων (ανάγνωσης μετά την εγγραφή) όπου η εξάρτηση είναι μεταξύ των οδηγιών και στη συνέχεια η ανάγνωση του ίδιου μητρώου.
2. Σταμάτημα (εισαγωγή φυσαλίδων):
* Μηχανισμός: Εάν η προώθηση δεδομένων δεν είναι δυνατή (π.χ. η εξάρτηση είναι πολύ μακριά από τον αγωγό ή περιλαμβάνει πρόσβαση στη μνήμη), ο αγωγός καθορίζεται με την εισαγωγή "φυσαλίδων"-οδηγίες NO-OP-έως ότου τα δεδομένα είναι έτοιμα.
* Παράδειγμα: Το I1 γράφει στη μνήμη και το i2 διαβάζει από αυτή τη θέση μνήμης. Η προώθηση δεδομένων δεν είναι εφικτή από τότε που η εγγραφή του I1 πρέπει να ολοκληρωθεί πριν το I2 μπορεί να διαβάσει. Ο αγωγός σταματά μέχρι το i1 να ολοκληρώσει την εγγραφή του.
* Αποτελεσματικότητα: Απλούστερη στην εφαρμογή από την προώθηση, αλλά μειώνει σημαντικά τη διακίνηση του αγωγού.
3. Εγγραφή μετονομασίας:
* Μηχανισμός: Ο μεταγλωττιστής ή το υλικό εκχωρεί διαφορετικά μητρώα σε οδηγίες που ενδέχεται να έχουν εξάρτηση δεδομένων. Αυτό εξαλείφει τον πόλεμο (γράψτε μετά την ανάγνωση) και τους κινδύνους WAW (WRITE After Write). Για παράδειγμα, εάν δύο οδηγίες χρησιμοποιούν το ίδιο μητρώο, το υλικό μπορεί να μετονομάσει ένα από αυτά σε διαφορετικό μητρώο, επίλυση της σύγκρουσης.
* Παράδειγμα: Δύο οδηγίες θέλουν να γράψουν στο R1. Η μετονομασία του καταχωρητή εκχωρεί τη δεύτερη εντολή διαφορετικό προσωρινό μητρώο, επίλυση του κινδύνου WAW.
* Αποτελεσματικότητα: Πολύ αποτελεσματική στην εξάλειψη των κινδύνων πολέμου και waw, αλλά περιλαμβάνει την πολυπλοκότητα του υλικού. Συχνά χρησιμοποιείται σε συνδυασμό με την προώθηση δεδομένων.
4. Βελτιστοποιήσεις μεταγλωττιστή:
* Μηχανισμός: Οι μεταγλωττιστές μπορούν να αναλύσουν τον κώδικα για εξαρτήσεις δεδομένων και οδηγίες αναδιάταξης για την ελαχιστοποίηση των κινδύνων. Αυτό μπορεί να περιλαμβάνει τον προγραμματισμό οδηγιών για τον διαχωρισμό των οδηγιών που εξαρτώνται μεταξύ τους, μειώνοντας έτσι την ανάγκη για παύση ή προώθηση.
* Παράδειγμα: Ο μεταγλωττιστής μπορεί να αναδιατάξει τις οδηγίες για να μετακινήσει οδηγίες που διαβάζουν τα δεδομένα περαιτέρω από τις οδηγίες που γράφουν αυτά τα δεδομένα, δίνοντας έτσι στον αγωγό περισσότερο χρόνο για να ολοκληρωθεί πριν από την εξαρτώμενη οδηγία το χρειάζεται.
* Αποτελεσματικότητα: Μειώνει τη συχνότητα των κινδύνων στο επίπεδο του πηγαίου κώδικα, αλλά η αποτελεσματικότητα εξαρτάται από τις δυνατότητες του μεταγλωττιστή.
Η επιλογή της τεχνικής μετριασμού εξαρτάται από τη συγκεκριμένη αρχιτεκτονική του επεξεργαστή. Οι σύγχρονοι επεξεργαστές χρησιμοποιούν συνήθως έναν συνδυασμό προώθησης δεδομένων, καταχώρησης μετονομασίας και βελτιστοποιήσεων μεταγλωττιστή για αποτελεσματικό χειρισμό κινδύνου δεδομένων. Η παύση χρησιμοποιείται συχνά ως έσχατη λύση όταν άλλες τεχνικές είναι ανεπαρκείς.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα