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

Η τεχνική εκτέλεσης εντολών εκτός σειράς (out-of-order execution)

   Ένας σημαντικός περιορισμός στις μέχρι τώρα τεχνικές σωλήνωσης είναι ότι όλες χρησιμοποιούν την κατά σειρά διευθέτηση των εντολών. Αν δηλαδή, μια εντολή καθυστερεί, τότε καμιά επόμενη εντολή δεν μπορεί να προχωρήσει. Έτσι, αν υπάρχει εξάρτηση μεταξύ δύο κοντινών εντολών τότε θα προκληθεί καθυστέρηση και αν υπάρχουν πολλαπλές λειτουργικές μονάδες, αυτές θα παραμείνουν ανενεργές. Εάν η εντολή j εξαρτάται από μία μακρινή εντολή i, τότε όλες οι εντολές μετά την j πρέπει να καθυστερήσουν μέχρι να τελειώσει η i και να εκτελεστεί η j.

Παράδειγμα 1oΠαράδειγμα 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Παράδειγμα 3o

Θεωρούμε το τμήμα κώδικα :

DIVD F0 , F2 , F4
ADDD F10 , F0 , F8
SUBD F10 , F8 , F14

Απάντηση:

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




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

Έστω το τμήμα κώδικα:

DIVD F0 , F2 , F4
ADDD F10 , F0 , F8
SUBD F8 , F8 , F14

Μπορείτε να περιγράψετε την εκτέλεση των εντολών του κώδικα και να προσδιορίσετε τους κινδύνους που προκύπτουν;

 

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