Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 2 η : Στοιχεία Αρχιτεκτονικής Υπολογιστών. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Σχετικά έγγραφα
Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήµιο Θεσσαλίας

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 8 ο Μερική Επικάλυψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Παραλληλισμός σε επίπεδο εντολών

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα

Θέματα Μεταγλωττιστών

Αρχιτεκτονική Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

ΠΕΡΙΕΧΟΜΕΝΑ Υλικό και Λογισμικό Αρχιτεκτονική Υπολογιστών Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

ΠΛΕ- 027 Μικροεπεξεργαστές 8ο μάθημα: Παραλληλία επιπέδου εντολής

Δυναμική Δρομολόγηση Εντολών (Dynamic Scheduling)

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 9 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπερβαθμωτοι επεξεργαστές

Θέματα Μεταγλωττιστών

Πανεπιστήµιο Θεσσαλίας

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση)

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

Αρχιτεκτονική Υπολογιστών II Ενδεικτικές απαντήσεις στα θέματα των εξετάσεων

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ II. χειμερινό εξάμηνο & εαρινό εξάμηνο (σε κίτρινο υπόβαθρο)

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

Πανεπιστήµιο Θεσσαλίας

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Μια Ανασκόπηση στην Οργάνωση Η/Υ. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

Κεντρική Μονάδα Επεξεργασίας

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

ΠΛΕ- 027 Μικροεπεξεργαστές 6ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση με διοχέτευση

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 6 Αύξηση της απόδοσης με διοχέτευση (pipeline)

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Πολυπύρηνοι επεξεργαστές Multicore processors

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing)

Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής. Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 3 ο ΜΕΔ απλού κύκλου

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 13. Διακλαδώσεις. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Θέµατα Φεβρουαρίου

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 1 ο

ΗΥ425 Αρχιτεκτονική Υπολογιστών. Προχωρημένες Τεχνικές Pipelining. Ιάκωβος Μαυροειδής

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Υποθετική Εκτέλεση Εντολών

Αρχιτεκτονική Υπολογιστών

Instruction-Level Parallelism and its Dynamic Exploitation. Μάθηµα 3ο Computer Architecture-A Quantitative Approach

ΗΥ425 Αρχιτεκτονική Υπολογιστών. Static Scheduling. Ιάκωβος Μαυροειδής

Υ- 01 Αρχιτεκτονική Υπολογιστών Back- end: χρονοπρογραμματισμός, εντολές προσπέλασης μνήμης

Υπερβαθµωτή Οργάνωση Υπολογιστών

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Διάλεξη 12 Καθυστερήσεις (Stalls)

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

Διάλεξη 11 Προώθηση (Forwarding)

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Pipeline: Ένα παράδειγμα από.τη καθημερινή ζωή. 30 min κάθε «φάση»

Αρχιτεκτονική υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

CS425 Computer Systems Architecture

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Συστήματα σε Ολοκληρωμένα Κυκλώματα

Αρχιτεκτονική Υπολογιστών

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Αρχιτεκτονική Η/Υ. Γιώργος ηµητρίου. Μια Ανασκόπηση στην Οργάνωση Η/Υ. Πανεπιστήµιο Θεσσαλίας - Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Τεχνολογίες Κύριας Μνήμης

2η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος , 5ο Εξάμηνο Σχολή ΗΜ&ΜΥ

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 2 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 12 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Ασκήσεις Caches

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

Ασκήσεις Caches

Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN!!! 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ!!!! Χατζηνικόλας Κώστας

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας

Transcript:

Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Ενότητα 2 η : Στοιχεία Αρχιτεκτονικής Υπολογιστών

Α. Μερική Επικάλυψη Μηχανισμός μερικής επικάλυψης εντολών Εξαρτήσεις Κίνδυνοι (hazards) Παροχέτευση Πρόβλεψη διακλαδώσεων Μερική επικάλυψη σε μονάδες εκτέλεσης Επαναχρησιμοποίηση υπομονάδων Χρόνος ολοκλήρωσης μιας εκτέλεσης Ρυθμός επανάληψης διαδοχικών εκτελέσεων

Επικάλυψη Εντολών Διαχωρισμός σε φάσεις ίσης διάρκειας που υλοποιούνται σε υπομονάδες του επεξεργαστή Εισαγωγή απαιτούμενων καταχωρητών μεταξύ των υπομονάδων διαδοχικών φάσεων (βαθμίδων) Αντιμετώπιση κινδύνων Υποστήριξη μηχανισμού παγώματος

Απόδοση Επικάλυψης Βελτίωση στο χρόνο ολοκλήρωσης μιας εντολής; Όχι! (Το αντίθετο πιο πιθανό!) Ρυθμός ολοκλήρωσης εντολών Επιτάχυνση ρυθμού ολοκλήρωσης εντολών Ιδανική απόδοση μερικής επικάλυψης σε μια συγκεκριμένη αρχιτεκτονική Μη ιδανική απόδοση λόγω κινδύνων

Κίνδυνοι Εξαρτήσεων από Δεδομένα

Παροχέτευση

Επιτυχημένη Παροχέτευση

Αποτυχημένη Παροχέτευση

Πάγωμα

Κίνδυνοι Διαδικασιακών Εξαρτήσεων Πάγωμα επικάλυψης μέχρι την εκτέλεση της διακλάδωσης Πρόβλεψη και εκκένωση (flush) της ΜΕΔ σε αποτυχία πρόβλεψης Η κατάσταση του επεξεργαστή δεν αλλάζει πριν την εκτέλεση της διακλάδωσης Εκτέλεση στη φάση αποκωδικοποίησης Χρήση θέσεων καθυστέρησης (branch delay slots)

Επικάλυψη σε Μονάδες Εκτέλεσης Πολλών Κύκλων Κύκλος Μηχανής Εντολή 1 2 3 4 5 6 7 8 9 10 11 Mul.d F0,F4,F6 IF ID M1 M2 M3 M4 M5 M6 M7 MEM WB Χρόνος καθυστέρησης (latency) ο χρόνος που πρέπει να μεσολαβήσει μέχρι μια άλλη εξαρτημένη από αυτήν εντολή Ρυθμός επανάληψης (repeat rate) η συχνότητα με την οποία ξεκινούν εκτέλεση διαδοχικές παρόμοιες εντολές

Προβλήματα Εκτέλεσης Πολλαπλών Κύκλων Πιθανοί κίνδυνοι δομικών εξαρτήσεων στη μονάδα εκτέλεσης Πιθανή ολοκλήρωση εκτός σειράς, με: Κινδύνους δομικών εξαρτήσεων στο ΦΚ Κινδύνους εξαρτήσεων από δεδομένα τύπου ΕΜΕ Συχνά παγώματα και πιο πολύπλοκος μηχανισμός παροχέτευσης Αντιμετώπιση ειδικών περιπτώσεων;

Αποφυγή Δομικών Εξαρτήσεων στη Μονάδα Εκτέλεσης Επικάλυψη των φάσεων εκτέλεσης ρυθμός επανάληψης = 1 εντολή ανά κύκλο μηχανής Αντιγραφή υπομονάδων για να αποφευχτεί επαναχρησιμοποίησή τους Ισοστάθμιση χρόνου / κόστους συχνότητα εμφάνισης της εντολής βέλτιστος ρυθμός επανάληψης

Βελτιστοποίηση Επικάλυψης στην Εκτέλεση Από τον αλγόριθμο εκτέλεσης της εντολής αντιστοιχίζουμε φάσεις σε υπομονάδες: Πίνακας δέσμευσης (reservation table) 1 2 3 4 5 6 7 A X X X B X X C X X D X Διάνυσμα σύγκρουσης (collision vector) 0 1 0 1 0 1

Διάγραμμα Καταστάσεων και Μέγιστος Ρυθμός Επανάληψης Αρχική κατάσταση = διάνυσμα σύγκρουσης Για ξεκίνημα εντολής ν κύκλους αργότερα: νέα κατάσταση = (διάνυσμα παρούσας κατάστασης << ν) OR διάνυσμα σύγκρουσης σύνδεσε τις καταστάσεις με ετικέτα ν, και τη νέα με την αρχική με ετικέτα Ν Επανέλαβε για κάθε δυνατό ν και κάθε νέα κατάσταση Βρες τον κύκλο με το μέγιστο ρυθμό επανάληψης

Παράδειγμα 7 7 7 1 0 1 0 1 0 1 5 5 1 1 1 1 1 1 7 3 3 1 1 0 1 0 1 1 1 1 1 0 1 5 Μέγιστος ρυθμός επανάληψης: 2 πράξεις σε 8cc ή 1/4

Βελτίωση Μέγιστου Ρυθμού Επανάληψης Ο πίνακας δέσμευσης θέτει το άνω φράγμα στο ρυθμό επανάληψης Αν ο μέγιστος ρυθμός δε συμπίπτει με το άνω φράγμα: Τοποθέτησε υπομονάδες καθυστέρησης (καταχωρητές) σε κατάλληλα σημεία της μονάδας, ώστε να πάρεις ένα νέο πίνακα δέσμευσης (μεγαλύτερου εύρους), ο οποίος να δίνει ρυθμό επανάληψης ίσο με το άνω φράγμα

Παράδειγμα Άνω φράγμα ρυθμού επανάληψης: 1/3 1 2 3 4 5 6 7 8 A X X F F FD X B X F X F C X X F D X F Η χρήση της υπομονάδας Α την τρίτη φορά για κάθε πράξη πρέπει να καθυστερεί κατά 1 cc Εισαγωγή υπομονάδας καθυστέρησης μεταξύ Β και Α με κατάλληλο έλεγχο για τη χρήση της

Ολοκλήρωση εκτός Σειράς Πάγωμα εντολών που ζητούν ταυτόχρονη εγγραφή στο ΦΚ Ανίχνευση στη φάση ID: όλα τα παγώματα στην ίδια φάση Ανίχνευση μόλις ζητηθεί ταυτόχρονη εγγραφή: πιο εύκολη Ανίχνευση εγγραφής στον ίδιο καταχωρητή πάγωμα της εντολής που ακολουθεί ακύρωση εγγραφής της πρώτης

Ενσωμάτωση Υπομονάδων Εκτέλεσης με/χωρίς Επικάλυψη

Παγώματα σε Υπομονάδες Κινητής Υποδιαστολής MIPS

Επικάλυψη στον MIPS R4000 Superpipelining:

Παροχέτευση στον R4000

Διακλαδώσεις στον R4000

Απόδοση Επικάλυψης στον R4000

Β. Εκμετάλλευση Παραλληλισμού Εντολών Εκμετάλλευση παραλληλίας εντολών (ILP): Στατική δρομολόγηση για προσαρμογή στις δυνατότητες της αρχιτεκτονικής Δυναμική δρομολόγηση για εκτέλεση ε- κτός σειράς Βελτιωμένοι αλγόριθμοι πρόβλεψης διακλαδώσεων Υποθετική εκτέλεση Υπερβαθμωτή εκτέλεση και πολλαπλές ροές ελέγχου

Σειρά Εκτέλεσης Εντολών Η σειρά εκτέλεσης περιορίζεται από τις εξαρτήσεις μεταξύ των εντολών: Ldc1 $f6,34($2) Ldc1 $f2,45($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d$f6,$f8,$f2 Η αρχιτεκτονική δεν παραβιάζει τις εξαρτήσεις, αλλά μπορεί να διευκολύνει την εκτέλεση!

Στατική Δρομολόγηση Εντολών Περιορισμένες διευκολύνσεις από τον επεξεργαστή Εκμετάλλευση ILP μέσα από βελτιστοποιήσεις του μεταγλωττιστή Οι εντολές εκτελούνται με τη σειρά που προσκομίζονται Πάγωμα για όσους κινδύνους δε μπορεί να αντιμετωπίσει ο επεξεργαστής

Δυναμική Δρομολόγηση Εντολών Ειδικό υλικό παρακολουθεί την εκτέλεση κάθε εντολής που προσκομίζεται Οι εντολές εκτελούνται όταν είναι έτοιμες για εκτέλεση Τα τελούμενα εισόδου είναι διαθέσιμα Η υπομονάδα εκτέλεσης είναι ελεύθερη Η αποθήκευση αποτελέσματος γίνεται ε- ντός ή εκτός σειράς;

Αλγόριθμοι Δυναμική δρομολόγηση βασισμένη στον πίνακα παρακολούθησης (scoreboard) CDC6600 (Thornton/Cray 1964) Δυναμική δρομολόγηση βασισμένη στους σταθμούς δέσμευσης (reservation stations) IBM S/360 Model 91 (Tomasulo/Amdahl 1965)

Σταθμοί Δέσμευσης (ή Αλγόριθμος Tomasulo) Οι σταθμοί δέσμευσης (reservation stations) υποδεικνύουν τις υπομονάδες από τις οποίες αναμένονται τα τελούμενα εισόδου που δε βρίσκονται ακόμα στο ΦΚ Μια εντολή μπορεί να μπει στη φάση εκτέλεσης μόλις τα τελούμενα που χρειάζεται γίνουν διαθέσιμα μέσω παροχέτευσης Εφ όσον τα τελούμενα προωθούνται μέσω παροχέτευσης, δεν εμφανίζονται κίνδυνοι από εξαρτήσεις ΕΜΕ και ΕΜΑ

Υλοποίηση Σταθμών Κατάσταση υπομονάδων εκτέλεσης Busy: Υπομονάδα απασχολημένη Op: Λειτουργία που εκτελεί η υπομονάδα Qj,Qk: Υπομονάδες που παράγουν τα δεδομένα εισόδου (ή 0 για διαθέσιμες τιμές) Vj,Vk: Τιμές δεδομένων εισόδου Α: Διευθύνσεις προσπέλασης μνήμης Κατάσταση εγγραφής καταχωρητών

MIPS και Αλγόριθμος Tomasulo

Υλοποίηση Ελέγχου Tomasulo (1) Έκδοση FP: wait until Station r empty if (RegisterStat[rs].Qi 0) { RS[r].Qj := RegisterStat[rs].Qi; } else { RS[r].Vj := Regs[rs]; RS[r].Qj := 0; } if (RegisterStat[rt].Qi 0) { RS[r].Qk := RegisterStat[rt].Qi; } else {RS[r].Vk := Regs[rt]; RS[r].Qk := 0; } RS[r].Busy := Y; RegisterStat[rd].Qi := r;

Υλοποίηση Ελέγχου Tomasulo (2) Έκδοση Load/Store: wait until Buffer r empty if (RegisterStat[rs].Qi 0) { RS[r].Qj := RegisterStat[rs].Qi; } else { RS[r].Vj := Regs[rs]; RS[r].Qj := 0; } RS[r].A := imm; RS[r].Busy := Y; Load : RegisterStat[rt].Qi := r; Store: if (RegisterStat[rt].Qi 0) { RS[r].Qk := RegisterStat[rt].Qi; } else {RS[r].Vk := Regs[rt]; RS[r].Qk := 0; }

Υλοποίηση Ελέγχου Tomasulo (3) Εκτέλεση FP: wait until (RS[r].Qj = 0) && (RS[r].Qk = 0) Εκτέλεση Load (1 ο βήμα)/store: wait until (RS[r].Qj = 0) && (r is head of queue) RS[r].A := RS[r].Vj + RS[r].A; Εκτέλεση Load (2 ο βήμα): wait until step 1 complete Read from MEM[RS[r].A]

Υλοποίηση Ελέγχου Tomasulo (4) Αποθήκευση αποτελέσματος FP/Load: wait until execution complete && CDB available x:(if (RegisterStat[x].Qi = r) { Regs[x] := result; RegisterStat[x].Qi := 0; }); x:(if (RS[x].Qj = r) { RS[x].Vj := result; RS[x].Qj := 0; }); x:(if (RS[x].Qk = r) { RS[x].Vk := result; RS[x].Qk := 0; }); RS[r].Busy := N;

Υλοποίηση Ελέγχου Tomasulo (5) Αποθήκευση αποτελέσματος Store: wait until execution complete && RS[r].Qk = 0 Store RS[r].Vk into MEM[RS[r].A]; RS[r].Busy := N;

Παράδειγμα Εντολή Κατάσταση εντολής Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Όνομα Κατάσταση υπομονάδων εκτέλεσης Busy Op Vj Vk Qj Qk A Load1 N Load2 Y Load 44+Regs[3] Add1 Y Sub Mem[32+Regs[2]] Load2 Add2 Y Add Add1 Load2 Add3 N Mult1 Y Mul Regs[f4] Load2 Mult2 Y Div Mem[32+Regs[2]] Mult1 Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult1 Load2 Add2 Add1 Mult2

Παράδειγμα Εντολή Ldc1 Ldc1 Mul.d Sub.d Div.d Add.d Όνομα Load1 Load2 Add1 Add2 Add3 Mult1 Mult2 Υπομονάδα cc0 $f6,32($2) $f2,44($3) $f0,$f2,$f4 $f8,$f6,$f2 $f10,$f0,$f6 $f6,$f8,$f2 Κατάσταση εντολής Έκδοση Εκτέλεση Αποθήκευση Κατάσταση υπομονάδων εκτέλεσης Busy Op Vj Vk Qj Qk A N Ν Ν Ν N Ν Ν Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30

Παράδειγμα Εντολή Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Όνομα Κατάσταση εντολής Έκδοση Εκτέλεση Αποθήκευση Κατάσταση υπομονάδων εκτέλεσης Busy Op Vj Vk Qj Qk A Load1 Υ Load Regs[2] Load2 Ν Add1 Ν Add2 Ν Add3 N Mult1 Ν Mult2 Ν Υπομονάδα cc1 Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Load1

Παράδειγμα Εντολή Υπομονάδα Load2 Load1 cc2 Κατάσταση εντολής Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Όνομα Κατάσταση υπομονάδων εκτέλεσης Busy Op Vj Vk Qj Qk A Load1 Y Load 32+Regs[2] Load2 Y Load Regs[3] Add1 N Add2 N Add3 N Mult1 N Mult2 N Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30

Παράδειγμα Κατάσταση εντολής Εντολή Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Κατάσταση υπομονάδων εκτέλεσης Όνομα Busy Op Vj Vk Qj Qk A Load1 Y Load 32+Regs[2] Load2 Y Load 44+Regs[3] Add1 N Add2 N Add3 N Mult1 Y Mul Regs[f4] Load2 Mult2 N Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult1 Load2 Load1 cc3

Παράδειγμα Κατάσταση εντολής Εντολή Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Κατάσταση υπομονάδων εκτέλεσης Busy Op Vj Vk Qj Qk A Όνομα Load1 Y Load 32+Regs[2] Load2 Y Load 44+Regs[3] Add1 Y Sub Load1 Load2 Add2 N Add3 N Mult1 Y Mul Regs[f4] Load2 Mult2 N Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult1 Load2 Load1 Add1 cc4

Παράδειγμα Κατάσταση εντολής Έκδοση Εκτέλεση Αποθήκευση Εντολή Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Κατάσταση υπομονάδων εκτέλεσης Όνομα Busy Op Vj Vk Qj Qk A Load1 N Load2 Y Load 44+Regs[3] Add1 Y Sub Mem[32+Regs[2]] Load2 Add2 N Add3 N Mult1 Y Mul Regs[f4] Load2 Mult2 Y Div Mem[32+Regs[2]] Mult1 Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult1 Load2 Add1 Mult2 cc5

Παράδειγμα Κατάσταση εντολής Εντολή Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Κατάσταση υπομονάδων εκτέλεσης Όνομα Busy Op Vj Vk Qj Qk A Load1 N Load2 Y Load 44+Regs[3] Add1 Y Sub Mem[32+Regs[2]] Load2 Add2 Y Add Add1 Load2 Add3 N Mult1 Y Mul Regs[f4] Load2 Mult2 Y Div Mem[32+Regs[2]] Mult1 Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult1 Load2 Add2 Add1 Mult2 cc6

Παράδειγμα Κατάσταση εντολής Εντολή Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Κατάσταση υπομονάδων εκτέλεσης Όνομα Busy Op Vj Vk Qj Qk A Load1 N Load2 N Add1 Y Sub Mem[32+Regs[2]] Mem[44+Regs[3]] Add2 Y Add Mem[44+Regs[3]] Add1 Add3 N Mult1 Y Mul Mem[44+Regs[3]] Regs[f4] Mult2 Y Div Mem[32+Regs[2]] Mult1 Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult1 Add2 Add1 Mult2 cc7

Παράδειγμα Κατάσταση εντολής Εντολή Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Κατάσταση υπομονάδων εκτέλεσης Όνομα Busy Op Vj Vk Qj Qk A Load1 N Load2 N Add1 Y Sub Mem[32+Regs[2]] Mem[44+Regs[3]] Add2 Y Add Mem[44+Regs[3]] Add1 Add3 N Mult1 Y Mul Mem[44+Regs[3]] Regs[f4] Mult2 Y Div Mem[32+Regs[2]] Mult1 Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult1 Add2 Add1 Mult2 cc8

Παράδειγμα Κατάσταση εντολής Εντολή Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Κατάσταση υπομονάδων εκτέλεσης Όνομα Busy Op Vj Vk Qj Qk A Load1 N Load2 N Add1 Y Sub Mem[32+Regs[2]] Mem[44+Regs[3]] Add2 Y Add Mem[44+Regs[3]] Add1 Add3 N Mult1 Y Mul Mem[44+Regs[3]] Regs[f4] Mult2 Y Div Mem[32+Regs[2]] Mult1 Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult1 Add2 Add1 Mult2 cc9

Παράδειγμα Κατάσταση εντολής Εντολή Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Κατάσταση υπομονάδων εκτέλεσης Όνομα Busy Op Vj Vk Qj Qk A Load1 N Load2 N Add1 N Add2 Y Add Mem[ ]-Mem[ ] Mem[44+Regs[3]] Add3 N Mult1 Y Mul Mem[44+Regs[3]] Regs[f4] Mult2 Y Div Mem[32+Regs[2]] Mult1 Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult1 Add2 Mult2 cc10

Παράδειγμα Κατάσταση εντολής Εντολή Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Κατάσταση υπομονάδων εκτέλεσης Όνομα Busy Op Vj Vk Qj Qk A Load1 N Load2 N Add1 N Add2 Y Add Mem[ ]-Mem[ ] Mem[44+Regs[3]] Add3 N Mult1 Y Mul Mem[44+Regs[3]] Regs[f4] Mult2 Y Div Mem[32+Regs[2]] Mult1 Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult1 Add2 Mult2 cc11

Παράδειγμα Κατάσταση εντολής Εντολή Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Κατάσταση υπομονάδων εκτέλεσης Όνομα Busy Op Vj Vk Qj Qk A Load1 N Load2 N Add1 N Add2 Y Add Mem[ ]-Mem[ ] Mem[44+Regs[3]] Add3 N Mult1 Y Mul Mem[44+Regs[3]] Regs[f4] Mult2 Y Div Mem[32+Regs[2]] Mult1 Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult1 Add2 Mult2 cc12

Παράδειγμα Κατάσταση εντολής Εντολή Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Κατάσταση υπομονάδων εκτέλεσης Όνομα Busy Op Vj Vk Qj Qk A Load1 N Load2 N Add1 N Add2 N Add3 N Mult1 Y Mul Mem[44+Regs[3]] Regs[f4] Mult2 Y Div Mem[32+Regs[2]] Mult1 Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult1 Mult2 cc13

Παράδειγμα Κατάσταση εντολής Εντολή Έκδοση Εκτέλεση Αποθήκευση Ldc1 $f6,32($2) Ldc1 $f2,44($3) Mul.d $f0,$f2,$f4 Sub.d $f8,$f6,$f2 Div.d $f10,$f0,$f6 Add.d $f6,$f8,$f2 Κατάσταση υπομονάδων εκτέλεσης Όνομα Busy Op Vj Vk Qj Qk A Load1 N Load2 N Add1 N Add2 N Add3 N Mult1 N Mult2 Y Div Mem[ ] Regs[f4] Mem[32+Regs[2]] Κατάσταση εγγραφής καταχωρητών $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 Υπομονάδα Mult2 cc14...

Περιορισμοί/Προβλήματα Διαθέσιμη παραλληλία στην εκτέλεση των εντολών Μέγεθος ουράς εντολών (παραθύρου έκδοσης issue window) Αριθμός και είδος υπομονάδων εκτέλεσης Δυνατότητες παροχέτευσης μεταξύ υπομονάδων

Πέρα από την Εκτέλεση Εκτός Σειράς Δυναμική πρόβλεψη διακλαδώσεων Ιστορία διακλάδωσης Πρόβλεψη πολλαπλών επιπέδων Υποθετική εκτέλεση Διαχείριση εντολών μετά από μία πρόβλεψη διακλάδωσης Υπερβαθμωτή ΜΕΔ Πολλαπλές ολικά επικαλυπτόμενες εντολές Περιορισμοί στην εκμετάλλευση ILP

Πρόβλεψη Διακλαδώσεων σε Δύο Επίπεδα Η συμπεριφορά της ίδιας διακλάδωσης σε διαδοχικές εκτελέσεις της πριν την παρούσα Η συμπεριφορά διαδοχικών διακλαδώσεων που εκτελούνται πριν την παρούσα Παράδειγμα: if (d == 0) d = 1; if (d == 1)... bne $1,$0,L1 addiu $1,$0,1 L1: addiu $3,$1,-1 bne $3,$0,L2 L2:

Υλοποιώντας το Δεύτερο Επίπεδο

Συγκριτική Απόδοση

Εναλλαγή Μεθόδων Πρόβλεψης Υλοποίηση πολλαπλών μεθόδων πρόβλεψης Επιλογή μιας μεθόδου δυναμικά, ανάλογα με την επιτυχία πρόβλεψης

Υποθετική Εκτέλεση Επιτρέπει την εκτέλεση εντολών που πιθανά να μην πρέπει να εκτελεστούν Απαραίτητη για συνδυασμό πρόβλεψης διακλαδώσεων με δυναμική δρομολόγηση εντολών για εκτέλεση εκτός σειράς Επιτηρεί την μεταβολή της κατάστασης του επεξεργαστή με βάση τις εκτελέσεις των διακλαδώσεων με τη σωστή σειρά

Απόσυρση Εντολών (Commit) Η τελευταία φάση στον κύκλο εντολής, που διαχωρίζεται από τη φάση εκτέλεσης Η απόσυρση γίνεται με την αρχική σειρά των εντολών Ακριβής αντιμετώπιση ειδικών περιπτώσεων Χρήση πίνακα επαναδιάταξης εντολών (reorder buffer) Ένα αποτέλεσμα εκτέλεσης αποθηκεύεται προσωρινά στον πίνακα επαναδιάταξης

MIPS με Υποθετική Εκτέλεση

Παράδειγμα Κατάσταση υπομονάδων εκτέλεσης Όνομα Busy Op Vj Vk Qj Qk Dest A Load1 Load2 Add1 Add2 Add3 N N N N N Mult1 N Mul Mem[45+Regs[3]] Regs[F4] #3 Mult2 Y Div Mem[34+Regs[2]] #3 #5 Πίνακας επαναδιάταξης # Busy Εντολή Κατάσταση Προορισμός Τιμή 1 N Ldc1 $f6,34($2) Commit F6 Mem[34+Regs[2]] 2 N Ldc1 $f2,45($3) Commit F2 Mem[45+Regs[3]] 3 Y Mul.d $f0,$f2,$f4 Write result F0 #2 x Regs[F4] 4 Y Sub.d $f8,$f6,$f2 Write result F8 #1 - #2 5 Y Div.d $f10,$f0,$f6 Execute F10 6 Y Add.d $f6,$f8,$f2 Write result F6 #4 + #2 Κατάσταση εγγραφής καταχωρητών Πεδίο $f0 $f2 $f4 $f6 $f8 $f10 $f12 $f30 #/Busy 3/Y -/N -/N 6/Y 4/Y 5/Y -/N -/N

Μετονομασία Καταχωρητών Χρήση μεγάλου αριθμού φυσικών καταχωρητών για προσωρινή απεικόνιση των καταχωρητών της αρχιτεκτονικής Μια προσωρινή απεικόνιση: οριστικοποιείται στην απόσυρση της αντίστοιχης διακλάδωσης ακυρώνεται σε αποτυχημένη πρόβλεψη Τα δεδομένα αποθηκεύονται μόνο στο ΦΚ, όχι στον πίνακα επαναδιάταξης

Υπερβαθμωτή ΜΕΔ Περισσότερες από μία διαδοχικές εντολές ανακαλούνται ταυτόχρονα από τη μνήμη, αποκωδικοποιούνται ταυτόχρονα και ετοιμάζονται για εκτέλεση ταυτόχρονα Αντιμετώπιση κινδύνων από εξαρτήσεις μεταξύ εντολών που επεξεργαζόμαστε ταυτόχρονα, και σύμφωνα με τη σωστή σειρά τους στον κώδικα!

Υπερβαθμωτή ΜΕΔ με Υποθετική Εκτέλεση Μετά την εκτέλεσή τους, πολλαπλές εντολές αποσύρονται ταυτόχρονα Περισσότερο πολύπλοκο υλικό Μεγαλύτερη ανάγκη επιτυχίας πρόβλεψης, ώστε να μη χάνεται το κέρδος από την υπερβαθμωτή εκτέλεση

Πού Σταματάμε; ILP που διαθέτουν τα προγράμματα Υλικό, πχ μέγεθος πίνακα επαναδιάταξης, αριθμός υπομονάδων εκτέλεσης, μέγεθος παραθύρου εντολών που βλέπει ο επεξεργαστής Πραγματική δυνατότητα πρόβλεψης διακλαδώσεων Δυσκολία αντιμετώπισης κινδύνων από εξαρτήσεις μνήμης

Αρχιτεκτονική i3/i5/i7 (Nehalem)

Αρχιτεκτονικές VLIW & Στατική Δρομολόγηση Εντολών Κωδικοποίηση πολλών επιμέρους εντολών σε μία Πολύ Μεγάλη Λέξη Εντολής (Very Long Instruction Word) Επεξεργαστές πολλαπλών μονάδων εκτέλεσης Παράλληλες εντολές Στατική δρομολόγηση εντολών από το μεταγλωττιστή Έλλειψη ελέγχου εξαρτήσεων μεταξύ εντολών της ίδιας λέξης

Οργάνωση Αρχιτεκτονικών VLIW Πολλές μονάδες εκτέλεσης 5 ή περισσότερες παράλληλες εκτελέσεις, για μικρότερο εύρος προτιμάται η υπερβαθμωτή αρχιτεκτονική με δυναμική δρομολόγηση Οι επιμέρους εντολές εκτελούνται όπως έρχονται από τη μνήμη εντολών Συνήθως οι επιμέρους εντολές εκτελούνται στις ίδιες κάθε φορά μονάδες εκτέλεσης

Εντολές VLIW Παράδειγμα οργάνωσης επιμέρους εντολών: οι δύο πρώτες εντολές είναι εντολές προσπέλασης μνήμης οι δύο επόμενες εντολές είναι κινητής υποδιαστολής η τελευταία εντολή είναι σταθερής υποδιαστολής Αν δεν μπορούμε να συμπληρώσουμε τις επιμέρους εντολές, αυτές μένουν κενές!

Παραγωγή Κώδικα Υψηλού ILP Συνήθως κώδικας υψηλού ILP προκύπτει από κατάλληλη δρομολόγηση βρόχων Ανίχνευση παράλληλων βρόχων Βελτιστοποιητικοί μετασχηματισμοί βρόχων που αρχικά δεν είναι παράλληλοι Δρομολόγηση εντολών βρόχου μετά από Ξεδίπλωμα ενός αριθμού επαναλήψεων Συμβολικό ξεδίπλωμα Δρομολόγηση ενός δρόμου

Ξεδίπλωμα Βρόχων Χωρίς δρομολόγηση: ldc1 F0,0(R1) ; t=1 add.d F4,F0,F2 ; t=3 sdc1 F4,0(R1) ; t=6 ldc1 F0,-8(R1) ; t=7 add.d F4,F0,F2 ; t=9 sdc1 F4,-8(R1) ; t=12 ldc1 F0,-16(R1) ; t=13 add.d F4,F0,F2 ; t=15 sdc1 F4,-16(R1) ; t=18 ldc1 F0,-24(R1) ; t=19 add.d F4,F0,F2 ; t=21 sdc1 F4,-24(R1) ; t=24 daddiu R1,R1,-32 ; t=25 bne R1,R2,Loop ; t=27 ldc1 F0,0(R1) ; t=29 Με δρομολόγηση: ldc1 F0,0(R1) ; t=1 ldc1 F6,-8(R1) ; t=2 ldc1 F10,-16(R1); t=3 ldc1 F14,-24(R1); t=4 add.d F4,F0,F2 ; t=5 add.d F8,F6,F2 ; t=6 add.d F12,F10,F2 ; t=7 add.d F16,F14,F2 ; t=8 sdc1 F4,0(R1) ; t=9 sdc1 F8,-8(R1) ; t=10 daddiu R1,R1,-32 ; t=11 sdc1 F12,16(R1) ; t=12 bne R1,R2,Loop ; t=13 sdc1 F16,8(R1) ; t=14 ldc1 F0,0(R1) ; t=15

Υπερβαθμωτή Δρομολόγηση Εκτέλεση μιας εντολής σταθερής και μιας εντολής κινητής υποδιαστολής ανά cc: ldc1 F0,0(R1) ; t=1 ldc1 F6,-8(R1) ; t=2 ldc1 F10,-16(R1) add.d F4,F0,F2 ; t=3 ldc1 F14,-24(R1) add.d F8,F6,F2 ; t=4 ldc1 F18,-32(R1) add.d F12,F10,F2 ; t=5 sdc1 F4,0(R1) add.d F16,F14,F2 ; t=6 sdc1 F8,-8(R1) add.d F20,F18,F2 ; t=7 sdc1 F12,-16(R1) ; t=8 daddiu R1,R1,-40 ; t=9 sdc1 F16,16(R1) ; t=10 bne R1,R2,Loop ; t=11 sdc1 F20,8(R1) ; t=12 ldc1 F0,0(R1) ; t=13

Δρομολόγηση VLIW Με βάση την προαναφερθείσα οργάνωση των επιμέρους εντολών: (Διακλαδώσεις χωρίς καθυστέρηση) ldc1 F0,0(R1) ldc1 F6,-8(R1) ldc1 F10,-16(R1) ldc1 F14,-24(R1) ldc1 F18,-32(R1) ldc1 F22,-40(R1) add.d F4,F0,F2 add.d F8,F6,F2 ldc1 F26,-48(R1) add.d F12,F10,F2 add.d F16,F14,F2 add.d F20,F18,F2 add.d F24,F22,F2 sdc1 F4,0(R1) sdc1 F8,-8(R1) add.d F28,F26,F2 sdc1 F12,-16(R1) sdc1 F16,-24(R1) daddiu R1,R1,-56 sdc1 F20,24(R1) sdc1 F24,16(R1) sdc1 F28,8(R1) bne R1,R2,Loop ldc1 F0,0(R1) ldc1 F6,-8(R1)

Παράλληλοι Βρόχοι Εξαρτήσεις εντολών & επαναλήψεων βρόχου: for (i=1; i<=100; i=i+1) { A[i+1] = A[i] + B[i]; B[i+1] = C[i] + A[i+1]; } for (i=1; i<=100; i=i+1) { A[i] = A[i] + B[i+1]; B[i+1] = C[i] + D[i]; } Σειριακός βρόχος Παράλληλος βρόχος

Παράλληλοι Βρόχοι Μετασχηματισμοί βρόχων που μπορούν να γίνουν παράλληλοι: for (i=1; i<=100; i=i+1) { A[i] = A[i] + B[i]; B[i+1] = C[i] + D[i]; } A[1] = A[1] + B[1]; for (i=1; i<=99; i=i+1) { B[i+1] = C[i] + D[i]; A[i+1] = A[i+1] + B[i+1]; } B[101] = C[100] + D[100]; Σειριακός βρόχος Παράλληλος βρόχος

Έλεγχος ΜΚΔ (GCD) Έστω δύο αναφορές στο ίδιο διάνυσμα Χ: Χ[a*i+b], X[c*i+d] Αν υπάρχει εξάρτηση μεταξύ των δύο αναφορών, τότε πρέπει: (d-b) mod GCD(c,a) = 0 Αναγκαία συνθήκη, αλλά όχι και ικανή: μπορούμε να συμπεράνουμε ότι δεν υπάρχει εξάρτηση, αλλά όχι το ανάποδο!

Συμβολικό Ξεδίπλωμα Βρόχων

Παράδειγμα Αρχικός βρόχος: Νέος βρόχος: Loop: ldc1 $f0,0($1) add.d $f4,$f0,$f2 sdc1 $f4,0($1) addiu $1,$1,-8 bne $1,$2,Loop <prologue> Loop: sdc1 $f4,0($1) add.d $f4,$f0,$f2 ldc1 $f0,-16($1) addiu $1,$1,-8 bne $1,$2,Loop <epilogue> Πώς προκύπτει μεγαλύτερο ILP;

Πραγματικό & Συμβολικό Ξεδίπλωμα

Καθολική Δρομολόγηση

Δρομολόγηση ενός Δρόμου

Superblock

Υποστήριξη από το Υλικό για Αύξηση ILP Βεβαιωμένη εκτέλεση Μετατροπή διαδικασιακά εξαρτημένων εντολών σε εντολές που εκτελούνται προαιρετικά Οι διαδικασιακές εξαρτήσεις γίνονται εξαρτήσεις από δεδομένα Στατική υποθετική εκτέλεση Ο μεταγλωττιστής παράγει ειδικές εντολές υποθετικής εκτέλεσης Το υλικό εξασφαλίζει την ορθότητα εκτέλεσης

Βεβαιωμένη Εκτέλεση Η συνθήκη διακλάδωσης αποθηκεύεται σε κάποιον καταχωρητή: Ειδικοί καταχωρητές βεβαίωσης cmp.ne p1=$8,$0 (p1) add $7,$8,$2 sw $7,0($1) Καταχωρητές γενικού σκοπού slti $5,$9,8 cmovz $7,$1,$5

Στατική Υποθετική Εκτέλεση Ο μεταγλωττιστής μετακινεί εντολές για εκτέλεση πριν από τη διακλάδωση από την οποία εξαρτώνται Ειδικές εντολές αγνοούν ή καθυστερούν τις ειδικές περιπτώσεις Ο μεταγλωττιστής μετακινεί εντολές φόρτωσης πριν από εντολές αποθήκευσης Ειδικές εντολές φόρτωσης οδηγούν σε έλεγχο επικάλυψης όταν γίνεται η αποθήκευση

Παράδειγμα (speculative load) Πηγαίος κώδικας C: if (A == 0) A = B; else A = A+4; Αρχική μετάφραση: lw $1,0($3) ;load A bnez $1,L1 ;test A lw $1,0($2) ;then clause (load B) j L2 ;skip else L1:addiu $1,$1,4 ;else clause (add 4 to A) L2:sw $1,0($3) ;store A

Παράδειγμα (speculative load) Απλή μετακίνηση εντολής φόρτωσης: lw $1,0($3) ;load A lw $14,0($2) ;speculative load B beqz $1,L2 ;test A L1:addiu $14,$1,4 ;else clause L2: sw $14,0($3) ;store A Ειδική περίπτωση χωρίς επάνοδο δεν πρέπει να τερματίζει το πρόγραμμα, αλλά να επιστρέφει κατάλληλη τιμή

Παράδειγμα (speculative load) Υλοποίηση με εντολή υποθετικής φόρτωσης και ειδική εντολή ελέγχου: lw $1,0($3) ;load A slw $14,0($2) ;speculative, no exception bnez $1,L1 ;test A specck 0($2) ;speculation check j L2 ;skip else L1:addiu $14,$1,4 ;else clause L2: sw $14,0($3) ;store A Ο έλεγχος μπορεί να υπονοηθεί με poison bits

Παράδειγμα (advanced load) Αρχικός κώδικας: sw $12,0($4) ;store lw $6,0($8) ;load sw $6,0($18) ;store Εντολή πρώιμης φόρτωσης και ελέγχου: lw.a $6,0($8) ;advanced load sw $12,0($4) ;store lw.c $6,0($8) ;check load sw $6,0($18) ;store Έλεγχος με κώδικα επαναφοράς

Προβλήματα Αρχιτεκτονικών VLIW Μεγάλος κώδικας Πολλαπλό ξεδίπλωμα βρόχων Κενές επιμέρους εντολές Συγχρονισμένη εκτέλεση επιμέρους εντολών Πάγωμα όλων των επιμέρους εντολών Μη φορητότητα κώδικα Ανάγκη εύρεσης υψηλού ILP

Υβριδικές Αρχιτεκτονικές Προσθήκη ελέγχου εξαρτήσεων και δρομολόγηση για εκτέλεση εκτός σειράς όχι για επιμέρους εντολές, η δρομολόγηση των οποίων παραμένει στην ευθύνη του μεταγλωττιστή Κατάλληλη κωδικοποίηση για φορητότητα κώδικα

Itanium

Γ. Θέματα Ιεραρχίας Μνήμης, Ε/Ε & Αρτηριών Κρυφή μνήμη Κύρια μνήμη Βελτιστοποιήσεις κρυφής μνήμης Κύρια μνήμη Ιδεατή μνήμη Βελτιστοποιήσεις κύριας και ιδεατής μνήμης Θέματα δευτερεύουσας μνήμης Συστήματα δίσκων Αρτηρίες διασύνδεσης Αρτηρίες διαχωρισμένης προσπέλασης

Απόδοση CPU έναντι DRAM Hennessy-Patterson

Κρυφή Μνήμη Μέσος χρόνος προσπέλασης = Χρόνος επιτυχούς προσπέλασης + Λόγος αποτυχίας Χρόνος προσπέλασης επόμενου επιπέδου Η σχεδίαση της κρυφής μνήμης γίνεται με σκοπό την ελαχιστοποίηση του μέσου χρόνου προσπέλασης Αυξημένη πολυπλοκότητα όταν υποστηρίζεται εκτέλεση εκτός σειράς

Μείωση Κόστους Αποτυχίας Πολλαπλά επίπεδα κρυφής μνήμης L2 και L3 επίπεδα Επιλογή δεδομένου από το μπλοκ Προηγείται το δεδομένο που ζητείται Προτεραιότητα στις εντολές φόρτωσης Έλεγχος για επικάλυψη διευθύνσεων Συγχώνευση στις αποθηκεύσεις Κρυφή μνήμη θυμάτων (victim cache)

Μείωση Λόγου Αποτυχίας Αύξηση μεγέθους μπλοκ Αύξηση μεγέθους μνήμης Αύξηση βαθμού συσχέτισης Ψευδοσυσχετιστική κρυφή μνήμη (pseudoassociative) Βελτιστοποιήσεις μεταγλωττιστή

Παραλληλισμός στην Κρυφή Μνήμη Nonblocking caches Οι προσπελάσεις συνεχίζονται σε μια αποτυχία μέχρι ενός αριθμού αποτυχιών Εκ των προτέρων προσκόμιση από το υλικό (hardware prefetching) Συνήθως σε εξωτερικό χώρο (stream buffer) Εκ των προτέρων προσκόμιση από το λογισμικό (software prefetching)

Βελτίωση Χρόνου Προσπέλασης σε Επιτυχία Μικρές και απλές κρυφές μνήμες Λογικές διευθύνσεις αντί για φυσικές Μεταγωγές περιβάλλοντος (context switches): Ακύρωση Διατήρηση κατάλληλης ετικέτας Πρόβλεψη δρόμου (way prediction) Μερική επικάλυψη προσπελάσεων Αποθήκευση χρήσιμων εντολών: κρυφές μνήμες ίχνους (trace caches)

Κύρια Μνήμη Οργάνωση χώρου διευθύνσεων Διαφύλλωση χαμηλής τάξης Τεχνολογία κατασκευής και διασύνδεσης με ΚΜΕ DIMM / SIMM SDRAM / DRAM DDR SDRAM RAMBUS / FSB

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Παράδειγμα: Alpha 21264 Hennessy-Patterson

Παράδειγμα: AMD Opteron Hennessy-Patterson

Συστήματα Δευτερεύουσας Αποθήκευσης Εξέλιξη τεχνολογίας δίσκων Συστήματα RAID: Redundant Arrays of Inexpensive (Independent) Disks

Θέματα Αρτηριών Αρτηρία διαχωρισμένης προσπέλασης (split transaction bus)

Δ. Εισαγωγή στην Παράλληλη Επεξεργασία Επίπεδο Παραλληλισμού Από εντολές έως ανεξάρτητες διεργασίες Οργανώσεις Παράλληλων Αρχιτεκτονικών Συμμετρικοί, κατανεμημένης μνήμης Μέθοδοι Επικοινωνίας και Δίκτυα Μέθοδοι Συγχρονισμού Διανυσματικοί Πολυεπεξεργαστές Πολλαπλές Ροές Ελέγχου

Επίπεδο Παραλληλισμού ILP Μερική επικάλυψη, εκτέλεση εκτός σειράς, υπερβαθμωτή εκτέλεση και εκτέλεση VLIW Πολλαπλές ροές ελέγχου (ή νήματα) Από την ίδια ή διαφορετικές διεργασίες Εκμετάλλευση παραλληλισμού βρόχων και εντολών υψηλού επιπέδου Διανυσματικοί επεξεργαστές & επεξεργαστές γραφικών Πολλαπλές διεργασίες

Πολυεπεξεργαστές & Πολυυπολογιστές Πολυεπεξεργαστές: Πολλαπλοί επεξεργαστές που συνδέονται στον ίδιο χώρο διευθύνσεων μνήμης Κοινή μνήμη Πολυυπολογιστές: Ανεξάρτητοι υπολογιστές συνδεδεμένοι μεταξύ τους Κατανεμημένη μνήμη Κατανεμημένη κοινή μνήμη: πολυυπολογιστές που εμφανίζονται ως πολυεπεξεργαστές!

Ταξινόμηση Flynn SISD (Single Instruction - Single Data) Οι μονοεπεξεργαστές SIMD (Single Instruction - Multiple Data) Οι διανυσματικοί επεξεργαστές MISD (Multiple Instruction - Single Data) Μηχανές ροής δεδομένων MIMD (Multiple Instruction - Multiple Data) Οι συνηθισμένοι παράλληλοι επεξεργαστές

Προβλήματα Μνήμης Συνοχή κρυφών μνημών Το πρόβλημα των εγγραφών και πώς αυτές γίνονται ορατές σε άλλους επεξεργαστές Συνέπεια μνήμης Το πρόβλημα των εγγραφών και πότε αυτές γίνονται ορατές σε άλλους επεξεργαστές

Συγχρονισμός Παράλληλης Επεξεργασίας Η ανάγκη συγχρονισμού Βρόχος doacross Μέθοδοι συγχρονισμού Συγχρονισμός μεταξύ δύο παράλληλων επεξεργασιών Φράγμα Θέματα υλοποίησης Ατομικές μικρολειτουργίες Υποστήριξη από το σύνολο εντολών

Διανυσματικοί Υπολογιστές Παράλληλη επεξεργασία τύπου SIMD: Υπολογιστές που εκτελούν διανυσματικές πράξεις Από τον Cray και τον IBM 3090 Μέχρι τους πιο πρόσφατους μικροεπεξεργαστές που εκτελούν διανυσματικές εντολές για media processing

Επεξεργασία Πολλαπλών Ροών Ελέγχου Ροές ελέγχου (ή νήματα) από την ίδια ή διαφορετικές διεργασίες Διάφορα επίπεδα παραλληλισμού Blocked και interleaved Συνδυασμός υπερβαθμωτής εκτέλεσης και εκτέλεσης πολλαπλών ροών ελέγχου Παραγωγή κώδικα πολλαπλών ροών ελέγχου!