Ένας σημαντικός περιορισμός στις μέχρι τώρα τεχνικές σωλήνωσης είναι ότι όλες χρησιμοποιούν την κατά σειρά διευθέτηση των εντολών. Αν δηλαδή, μια εντολή καθυστερεί, τότε καμιά επόμενη εντολή δεν μπορεί να προχωρήσει. Έτσι, αν υπάρχει εξάρτηση μεταξύ δύο κοντινών εντολών τότε θα προκληθεί καθυστέρηση και αν υπάρχουν πολλαπλές λειτουργικές μονάδες, αυτές θα παραμείνουν ανενεργές. Εάν η εντολή j εξαρτάται από μία μακρινή εντολή i, τότε όλες οι εντολές μετά την j πρέπει να καθυστερήσουν μέχρι να τελειώσει η i και να εκτελεστεί η j.
Παράδειγμα 1oΘεωρούμε το τμήμα κώδικα :
ΑπάντησηDIVD F0 , F2 , F4
ADDD F10 , F0 , F8
SUBD F12 , F8 , F14
Η εντολή SUBD δεν μπορεί να εκτελεστεί επειδή η εξάρτηση της εντολής ADDD από την εντολή DIVD προκαλεί καθυστέρηση στη σωλήνωση, παρόλο που η εντολή SUBD δεν έχει εξάρτηση δεδομένων από καμία προηγούμενη εντολή. Αυτός ο περιορισμός κατά την εκτέλεση των εντολών μπορεί να αντιμετωπιστεί με την τεχνική εκτέλεση εντολών εκτός σειράς.
Γνωρίζουμε ότι στην DLX σωλήνωση, τόσο οι κίνδυνοι δεδομένων όσο και οι κατασκευαστικοί ανιχνεύονται στο στάδιο ID. Aν δεν εντοπιστούν κίνδυνοι, τότε μια εντολή μπορεί να διευθετηθεί και να εκτελεστεί κανονικά.
Για να εκτελέσουμε μία ανεξάρτητη εντολή όπως η SUBD, εκτός σειράς, πρέπει να διασπάσουμε το στάδιο ID σε δύο μέρη:
Όταν γίνεται εκτέλεση εκτός σειράς, όλες οι εντολές περνούν από το στάδιο διευθέτησης με τη σειρά, αλλά στο δεύτερο στάδιο, μπορούν να καθυστερήσουν ή να παρακάμψουν η μία την άλλη, ανάλογα με το εάν είναι διαθέσιμοι οι τελεστέοι τους, εισάγοντας έτσι εκτέλεση εκτός σειράς.
Η εκτέλεση μιας εντολής εκτός σειράς σημαίνει ότι η εντολή θα αποπερατωθεί εκτός σειράς. Ανάλογα με τη λειτουργία που πρόκειται να γίνει, η εκτέλεση μιας εντολής διαρκεί ορισμένους κύκλους ρολογιού. Έτσι, πρέπει να διακρίνουμε πότε μια εντολή ξεκινάει την εκτέλεσή της και πότε ολοκληρώνει την εκτέλεσή της. Μεταξύ αυτών των δύο περιπτώσεων η εντολή βρίσκεται σε εκτέλεση. Έτσι λοιπόν, πολλαπλές εντολές μπορούν να εκτελούνται την ίδια χρονική στιγμή.
Επιπλέον, για να μελετήσουμε καλύτερα τις πιο προχωρημένες τεχνικές σωλήνωσης, θα αλλάξουμε το σχεδιασμό της λειτουργικής μονάδας μεταβάλλοντας τον αριθμό των μονάδων, την καθυστέρηση των λειτουργιών και την σωλήνωση των λειτουργικών μονάδων.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 3
ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 3 Θεωρούμε το τμήμα κώδικα :
Παράδειγμα 3o
ADDD F10 , F0 , F8
SUBD F10 , F8 , F14
Ο καταχωρητής F10 είναι ο προορισμός τόσο της ADDD όσο και της SUBD, έτσι μπορεί να προκύψει WAW κίνδυνος. Και στα δύο προηγούμενα παραδείγματα οι κίνδυνοι μπορούν να αποφευχθούν καθυστερώντας τη διευθέτηση της εντολής SUBD, χρησιμοποιώντας την τεχνική του πίνακα αποτελεσμάτων που θα γνωρίσουμε παρακάτω.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 4
|
|