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

Οι VLIW επεξεργαστές

   Με έναν VLIW επεξεργαστή μπορούμε να μειώσουμε την ποσότητα του υλικού που χρειάζεται για να πραγματοποιήσουμε έναν επεξεργαστή πολλαπλής διευθέτησης.
Η LIW ή VLIW αρχιτεκτονική χρησιμοποιεί πολλαπλές, ανεξάρτητες λειτουργικές μονάδες. Με την VLIW αρχιτεκτονική οι πολλαπλές εντολές ομαδοποιούνται σε μια πολύ μεγάλη εντολή που καλείται όνομα. Η ευθύνη για την επιλογή των εντολών που θα διευθετηθούν ταυτόχρονα, ανήκει στον μεταγλωττιστή.
Μία VLIW εντολή μπορεί να περιέχει δύο εντολές ακεραίων, δύο εντολές κινητής υποδιαστολής, δύο αναφορές στη μνήμη και μία εντολή διακλάδωσης. Μία εντολή μπορεί να έχει ένα σύνολο πεδίων για κάθε λειτουργική μονάδα - ίσως από 16 ως 24 bits ανά μονάδα – παράγοντας μία εντολή με μήκος από 112 ως 168 bits. Για να είναι απασχολημένες οι λειτουργικές μονάδες, πρέπει να υπάρχει αρκετή παραλληλία σε μια ακολουθία κώδικα χωρίς διακλαδώσεις, ώστε να γεμίζουν οι διαθέσιμες θύρες λειτουργίας. Αυτή η παραλληλία αποκαλύπτεται με την ανάπτυξη και τον προγραμματισμό των βρόχων χρησιμοποιώντας τεχνικές καθολικού προγραμματισμού. Ας υποθέσουμε ότι διαθέτουμε μία τεχνική που να παράγει μεγάλες ακολουθίες κώδικα χωρίς διακλαδώσεις, χρήσιμες στην αύξηση των VLIW εντολών.

Παράδειγμα

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

loop: LD F0, 0(R1) ; F0 = στοιχείο πίνακα
ADDD F4, F0, F2 ; πρόσθεση με το βαθμωτό μέγεθος του F2
SD 0(R1), F4 ; αποθήκευση του αποτελέσματος
SUBI R1, R1, #8 ; μείωση δείκτη 8 bytes (για κάθε DW)
BNEZ R1, loop ; διακλάδωση R1!= μηδέν

Απάντηση:
Ο βρόχος αναπτύχθηκε έτσι ώστε να δημιουργηθούν εφτά αντίγραφά του, γεγονός που εξαλείφει όλες τις καθυστερήσεις. Τα εφτά αποτελέσματα δίνονται σε 9 κύκλους ρολογιού ή σε 1.29 κύκλους ρολογιού ανά αποτέλεσμα. Οι VLIW εντολές της ανεπτυγμένης ακολουθίας φαίνονται στον παρακάτω πίνακα.

Ο ρυθμός διευθέτησης είναι 23 λειτουργίες σε εννέα κύκλους ρολογιού ή 2.5 λειτουργίες ανά κύκλο ρολογιού. Για να επιτύχουμε τέτοιο ρυθμό διευθέτησης, απαιτείται μεγαλύτερος αριθμός καταχωρητών από ότι στον απλό DLX επεξεργαστή. Η αποδοτικότητα, δηλαδή το ποσοστό των διαθέσιμων θυρών που περιείχαν μία λειτουργία, είναι περίπου 60%. Η παραπάνω ακολουθία κώδικα του VLIW επεξεργαστή απαιτεί τουλάχιστον οκτώ καταχωρητές κινητής υποδιαστολής, ενώ ο βασικός DLX επεξεργαστή απαιτεί από δύο ως πέντε και ο υπερβαθμωτός έξι καταχωρητές.

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