Με έναν 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 εντολές της ανεπτυγμένης ακολουθίας φαίνονται στον παρακάτω πίνακα.
Επειδή ένας VLIW είναι στατικά προγραμματισμένος και λειτουργεί με κλείδωση βήματος, μία καθυστέρηση σε οποιαδήποτε λειτουργική μονάδα καθυστερεί ολόκληρο τον επεξεργαστή, αφού όλες οι λειτουργικές μονάδες είναι συγχρονισμένες.
|
|