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

Σχετικά έγγραφα
Υ- 07 Παράλληλα Συστήματα Αρχιτεκτονική σύγχρονων πυρήνων επεξεργαστών

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

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

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

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

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

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

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

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

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

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

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

ΠΛΕ- 027 Μικροεπεξεργαστές 7ο μάθημα: Αρχιτεκτονική πυρήνα: Πρόβλεψη διακλάδωσης, Εξαιρέσεις

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

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

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

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

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

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

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

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Front- end: Προσκόμιση, αποκωδικοποίηση, μετονομασία καταχωρητών

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

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw.

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

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

30 min κάθε «φάση» Pipeline: Ένα παράδειγµα από.τη καθηµερινή ζωή. 1. Πλυντήριο. 2. Στεγνωτήριο. 3. ίπλωµα. 4. αποθήκευση. προσέγγιση για 4.

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

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

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

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

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Διοχέτευση

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

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

CS425 Computer Systems Architecture

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

Pipelined Datapath, Hazards and Forwarding

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

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

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

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

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

Κεφάλαιο 4. Ο επεξεργαστής. Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση

2 η Ενδιάμεση Εξέταση Λύσεις/Απαντήσεις

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

Single Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

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

Επανάληψη Σύστημα Διασωλήνωσης (Pipelining) Κεφάλαιο 4 - Σύστημα ιασωλήνωσης

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

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

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

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

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

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

Κεφάλαιο 4. Ο επεξεργαστής. Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση

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

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

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου

Διοχέτευση (Pipeline)

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός Κεφ. 4: O επεξεργαστής Σύστημα Διασωλήνωσης (Pipelining)

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

Οργάνωση Υπολογιστών

Multi Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

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

Κεφάλαιο 4. Ο επεξεργαστής

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

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

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

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

Κεφάλαιο 6 Βελτίωση Απόδοσης με Διασωλήνωση (Enhancing Performance with Pipelining)

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

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

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

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

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

Κάθε functional unit χρησιμοποιείται μια φορά σε κάθε κύκλο: ανάγκη για πολλαπλό hardware = κόστος υλοποίησης!

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

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

Εισαγωγή. Σύνοψη βασικών εννοιών, 5-stage pipeline, επεκτάσεις για λειτουργίες πολλαπλών κύκλων

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

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

Τελική Εξέταση, Απαντήσεις/Λύσεις

Τέτοιες λειτουργίες γίνονται διαμέσου του

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

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

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

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

3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ

Περιορισμοί των βαθμωτών αρχιτεκτονικών

Άσκηση IF ID EX MEM WB α. 300ps 400ps 350ps 500ps 100ps β. 200ps 150ps 120ps 190ps 140ps

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

Application Operating System. Datapath & Control/Memory. Digital Design Circuit Design. Layout

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

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

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

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

1.1 ΑΣΚΗΣΗ ΛΥΣΗ 2.1 ΑΣΚΗΣΗ ΛΥΣΗ 3.1 ΑΣΚΗΣΗ

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

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

Transcript:

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

Ταχύτερη εκτέλεση Με τις τεχνικές που είδαμε στα προηγούμενα μαθήματα μπορούμε να εκτελέσουμε (με επικάλυψη) περίπου 1 εντολή ανά κύκλο ρολογιού κατά μέσο όρο διοχέτευση πρόβλεψη διακλάδωσης Πώς μπορούμε να αυξήσουμε την ταχύτητα εκτέλεσης περισσότερο; περισσότερη διοχέτευση γίνεται λιγότερο αποδοτική ταυτόχρονη εκτέλεση ανεξάρτητων εντολών τεχνικές αύξησης ταυτοχρονισμού (concurrency) ώστε να εκμεταλευτούμε το παραπάνω ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 2

Ταυτόχρονη εκτέλεση Χρειάζονται πολλαπλές μονάδες εκτέλεσης π.χ. ALUs, πολλαπλασιαστές,... Πολλά αντίγραφα του διοχευμένου data- path που εξετάσαμε σε προηγούμενα μαθήματα περισσότερες θύρες στο register file Προσκόμιση πολλών (συνεχόμενων) εντολών ταυτόχρονα Πολλαπλή εκκίνηση (muliple issue) ανεξάρτητων εντολών σε έναν κύκλο ρολογιού σε ξεχωριστές μονάδες/pipelines To CPI θα είναι < 1, χρησιμοποιούμε το αντίστροφο IPC ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 3

Εκτέλεση πολλαπλών εντολών ALU Mem IF ID Issue WB Fadd registers Fmul Διάφοροι δομικοί κίνδυνοι περισσότερες θύρες στο register file για ανάγνωση εγγραφή μονάδες εκτέλεσης που δεν είναι διοχετευμένες Εγγραφές αποτελεσμάτων εκτός σειράς από μονάδες με διαφορετικό χρόνο εκτέλεσης Fdiv ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 4

Πολλαπλή εκκίνηση Στατική πολλαπλή εκκίνηση (staic muliple issue) ο μεταγλωτιστής συγκεντρώνει εντολές που μπορούν να ξεκινήσουν ταυτόχρονα και τις τοποθετεί σε υποδοχές εκκίνησης (issue slots) ο μεταγλωτιστής είναι υπεύθυνος να ανιχνεύσει και να αποφύγει τους κινδύνους (hazards) Δυναμική πολλαπλή εκκίνηση (dynamic) ο πυρήνας εξετάζει το πρόγραμμα και αποφασίζει ποιές εντολές θα ξεκινήσουν ταυτόχρονα ο μεταγλωτιστής μπορεί να βοηθήσει τοποθετώντας τις εντολές σε κατάλληλη σειρά ο πυρήνας αντιμετωπίζει τους κινδύνους κατά την εκτέλεση ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 5

Στατική πολλαπλή εκκίνηση Ο μεταγλωτιστής συγκεντρώνει εντολές σε ένα πακέτο εκκίνησης (issue packet) οι εντολές ξεκινούν ταυτόχρονα, στον ίδιο κύκλο ρολογιού το είδος των εντολών εξαρτάται από τον αριθμό των μονάδων (γενκά πόρων) που υπάρχουν στο datapath Μοιάζει με μια μεγάλη εντολή ονομάζεται very- large instrucion word (VLIW) ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 6

Χρονοπρογραμματισμός Ο μεταγλωτιστής είναι υπεύθυνος για αποφυγή κινδύνων όλων ή τουλάχιστον των περισσότερων αναδιάταξη εντολών σε πακέτα εκκίνησης δεν πρέπει να υπάρχουν εξαρτήσεις μεταξύ εντολών στο πακέτο μπορεί να επιτρέπονται εξαρτήσεις μεταξύ πακέτων Συμπλήρωση με noops αν υπάρχουν κενές θέσεις σε πακέτα ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 7

Παράδειγμα: MIPS διπλής εκκίνησης Πακέτο: μία ALU ή διακλάδωση μαζί με μία load ή store ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 8

Ξετύλιγμα βρόχου Οι θέσεις στα πακέτα εντολών πρέπει να είναι γεμάτες για καλή απόδοση Ενας τρόπος που επιτρέπει στον μεταγλωτιστή να βρεί διαθέσιμες εντολές είναι το ξετύλιγμα βρόχου (loop unrolling) αντιγραφή κώδικα σώματος βρόχου από διαφορετικές επαναλλήψεις ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 9

Παράδειγμα ξετυλίγματος Loop: lw $t0, 0($s1) # $t0=array element addu $t0, $t0, $s2 # add scalar in $s2 sw $t0, 0($s1) # store result addi $s1, $s1, 4 # decrement pointer bne $s1, $zero, Loop # branch $s1!=0 ALU/branch Load/store cycle Loop: nop lw $t0, 0($s1) 1 addi $s1, $s1, 4 nop 2 addu $t0, $t0, $s2 nop 3 bne $s1, $zero, Loop sw $t0, 4($s1) 4 IPC = 5/4 = 1.25 (c.f. peak IPC = 2) ALU/branch Load/store cycle Loop: addi $s1, $s1, 16 lw $t0, 0($s1) 1 nop lw $t1, 12($s1) 2 addu $t0, $t0, $s2 lw $t2, 8($s1) 3 addu $t1, $t1, $s2 lw $t3, 4($s1) 4 addu $t2, $t2, $s2 sw $t0, 16($s1) 5 addu $t3, $t4, $s2 sw $t1, 12($s1) 6 nop sw $t2, 8($s1) 7 bne $s1, $zero, Loop sw $t3, 4($s1) 8 IPC = 14/8 = 1.75 ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 10

Υλοποίηση πολλαπλής εκκίνησης PC Inst. Mem 2 D Dual Decode GPRs X1 + X2 Data Mem X3 W 2 εντολές ανά πακέτο integer/mem FPRs κινητής υποδιαστολής Επιπλέον καταχωρητές διοχέτευσης σε μονάδες ώστε όλα τα είδη εντολών να γράφουν αποτελέσματα στον ίδιο κύκλο Καθυστέρηση (stall) για εντολές που παίρνουν πολύ χρόνο διαιρέσεις, αστοχίες κρυφής μνήμης,... Προώθηση δεδομένων X1 X2 FAdd X2 FMul Unpipelined divider FDiv X2 X3 X3 X3 W ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 11

Δυναμική πολλαπλή εκκίνηση Λέγονται και υπερβαθμωτοί επεξεργαστές (superscalar) Ο επεξεργαστής αποφασίζει αν θα ξεκινήσει 0, 1, 2,... εντολές ταυτόχρονα σε κάθε κύκλο όσες περισσότερες μπορεί Ο επεξεργαστής είναι υπεύθυνος για τη σωστή εκτέλεση αντιμετώπιση κινδύνων Δεν είναι απαραίτητη η βοήθεια του μεταγλωτιστή αν και μπορεί να διευκολύνει Μπορεί να εκτελέσει προγράμματα γραμμένα για απλούστερους επεξεργαστές της ίδιας αρχιτεκτονικής απευθείας ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 12

Ορια ILP Τώρα που έχουμε τη δυνατότητα παράλληλης και επικαλυπτώμενης εκτέλεσης εντολών, πόσο «μακριά» μπορούμε να πάμε; Οχι πολύ! Οι εντολές έχουν εξαρτήσεις: το αποτέλεσμα μιας εντολής χρειάζεται σε μια άλλη που δεν απέχει πολύ στο πρόγραμμα (ή ο παραγωγός αργεί π.χ. cache miss) Πολύ συχνά (κάθε 5-6 εντολές) το πρόγραμμα παίρνει αποφάσεις που αλλάζουν τη ροή εκτέλεσης (διακλαδώσεις). Πόσες εντολές να εκτελέσει ο πυρήνας όταν δεν ξέρει προς τα πού θα αλλάξει η ροή του νήματος; 13

Σπρώχνοντας τα όρια του ILP Για να αξιοποιήσουμε το υλικό που επιτρέπει παράλληλη εκτέλεση εντολών πρέπει να επεκτείνουμε τον ταυτοχρονισμό (concurrency) του προγράμματος Πώς; Αλλάζοντας τη σειρά εκτέλεσης εντολών Αν η επόμενη εντολή περιμένει κάποιο αποτέλεσμα και η μεθεπόμενη είναι ανεξάρτητη, ας εκτελεστεί Πρόβλημα: πώς θα δίνουμε την εντύπωση σειριακής εκτέλεσης; Προβλέποντας τις διακλαδώσεις (branch predicion) οδηγεί σε εκτέλεση βασισμένη σε εικασίες (speculaive execuion) 14

Δυναμικός χρονοπρογραμματισμός Παράδειγμα lw $t0, 20($s2) addu $t1, $t0, $t2 subu $s4, $s4, $t3 slti $t5, $s4, 20 Η subu μπορεί να ξεκινήσει όσο η addu περιμένει την lw Καλύτερος από στατικό χρονοπρογραμματισμό δεν μπορούν να προβλεφθούν όλες οι καθυστερήσεις (π.χ. αστοχίες κρυφής μνήμης) κάποιες διακλαδώσεις δεν μπορούν να προβλεφθούν πριν την εκτέλεση (π.χ. εξάρτηση από τις τιμές δεδομένων) ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 15

Κίνδυνοι δεδομένων Εξάρτηση δεδοµένων (Data-dependence) r 3 r 1 op r 2 Read-after-Write r 5 r 3 op r 4 (RAW) hazard Αντί-εξάρτηση (Anti-dependence) r 3 r 1 op r 2 Write-after-Read r 1 r 4 op r 5 (WAR) hazard Εξάρτηση αποτελέσµατος (Output-dependence) r 3 r 1 op r 2 Write-after-Write r 3 r 6 op r 7 (WAW) hazard Eξαρτήσεις δεδομένων υπάρχουν και μέσω μνήμης, αλλά είναι δύσκολο να ελεγχθούν ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 16

Παράδειγμα χρονοπρογραμματισμού I 1 DIVD f6, f6, f4 I 2 LD f2, 45(r3) I 1 I 2 I 3 MULTD f0, f2, f4 I 4 DIVD f8, f6, f2 I 5 SUBD f10, f0, f6 I 3 I 4 I 6 ADDD f6, f8, f2 I 5 Έγκυρες διατάξεις: σε σειρά I 1 I 2 I 3 I 4 I 5 I 6 I 6 εκτός σειράς εκτός σειράς I 2 I 1 I 3 I 4 I 5 I 6 I 1 I 2 I 3 I 5 I 4 I 6 RAW Hazards WAR Hazards WAW Hazards ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 17

Μετονομασία καταχωρητών Οι WAR, WAW εξαρτήσεις μεταξύ εντολών δέν είναι πραγματικές! add r1, r2, 10 mul r3, r1, 10 add r1, r4, 20 sub r5, r1, 20 add ra, r2, 10 mul rb, ra, 10 add rc, r4, 20 sub rd, rc, 20 Ονομάζεται register renaming Απλά δεν έχουμε αρκετούς καταχωρητές! Αν αλλάξουμε τα ονόματα των καταχωρητών το πρόβλημα λύνεται Παράλληλα Συστήματα 2012 18

Μετονομασία καταχωρητών Η αλλαγή ονομάτων λύνει όλους τους κινδύνους WAW, WAR Γιατί δεν το κάνει ο μεταφραστής ήδη; δεν υπάρχουν άλλοι καταχωρητές ορατοί από τον μεταφραστή (σε επίπεδο αρχιτεκτονικής) σκεφτείτε την κωδικοποίηση εντολών αλλά το αφαιρετικό επίπεδο μικρο- αρχιτεκτονικής μπορεί να έχει περισσότερους καταχωρητές και να αλλάζει τα ονόματα των καταχωρητών αρχιτεκτονικής κατά την αποκωδικοποίηση εντολών ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 19

Εκτέλεση εκτός σειράς Πώς διαφυλάσεται η (αρχική) σειρά εκτέλεσης; Η εκτέλεση μιας εντολής χωρίζεται σε 3 φάσεις: σε εξέλιξη (έχει ξεκινήσει) dispatched ολοκληρώθηκε (completed) δεσμεύτηκε (commi ed, reired) Εντολές που έχουν ολοκληρωθεί, έχουν κάνει αλλαγές και τα αποτελέσματά τους μπορούν να χρησιμοποιηθούν από επόμενες εντολές αλλά οι αλλαγές δεν φαίνονται έξω από το νήμα Το στάδιο δέσμευσης, γίνεται με τη σειρά του προγράμματος οι αλλαγές είναι πλέον ορατές Παράλληλα Συστήματα 2012 20

Δύο όψεις (states) της μηχανής Architectural state αλλάζει μόνο από δεσμευμένες εντολές η επίσημη κατάσταση του νήματος περιλαμβάνει τους καταχωρητές και τη κύρια μνήμη Εικαζόμενη (speculaive) state αλλάζει όταν η εκτέλεση μιας εντολής ολοκληρώνεται Υπάρχει «κρυφή» αποθήκευση μέσα στον πυρήνα Μπορεί να συνδιαστεί με τους επιπλέον καταχωρητές που χρειάζονται για μετονομασία καταχωρητών Παράλληλα Συστήματα 2012 21

Υλοποίηση 2 όψεων Δομή δεδομένων σε υλικό (κυκλική ουρά) reorder buffer Οι αποκωδικοποιημένες εντολές μπαίνουν με τη σειρά στην αρχή της ουράς Οι εντολές που φτάνουν στο τέλος της ουράς (και έχουν ολοκληρωθεί) θεωρούνται δεσμευμένες Τα αποτελεσματά τους «αντιγράφονται» στην architectural state και αφαιρούνται από την ουρά Αν μία εντολή φτάσει στο τέλος της ουράς και έχει αποτύχει (excepion) όλες οι εντολές της ουράς αποσύρονται και ξαναπροσκομίζουμε εντολές από την κατάλληλη διεύθυνση Παράλληλα Συστήματα 2012 22

Program Form Static program dynamic inst. Stream (trace) execution window completed instructions Processing Phase Dispatch/ dependences inst. Issue inst execution inst. Reorder & commit Credit: Moshovos U.Toronto

Αποθήκευση τιμών Για να υλοποιήσουμε τις δύο όψεις κρατάμε προσωρινές τιμές καταχωρητών από την στιγμή που ολοκληρώνεται η εκτέλεση μιας εντολής μέχρι να δεσμευτεί Είτε κρατάμε προσωρινές τιμές στο reorder buffer και ένα «επίσημο» αρχείο καταχωρητών (register file) ή ένα μεγάλο αρχείο καταχωρητών (physical register file) και ένα πίνακα με τις αντιστοιχίσεις των «αρχιτεκτονικών καταχωρητών» στους φυσικούς Είναι αδύνατο να κρατάμε αντίγραφο της κύριας μνήμης Πώς μπορούμε να χειριστούμε εντολές αποθήκευσης (store); Παράλληλα Συστήματα 2012 24

Store buffer Οι εντολές αποθήκευσης γράφουν τη διεύθυνση και τη τιμή στον store buffer και περιμένουν μέχρι η εντολή να δεσμευτεί πριν ξεκινήσουν την εγγραφή στη μνήμη Τι συμβαίνει όμως αν μια εντολή φόρτωσης (load) από τη μνήμη εκτελεστεί πριν αδειάσει ο store buffer; Αν η διεύθυνση της load είναι ίδια με τη store, η load παίρνει τα δεδομένα από το store buffer! Αλλιώς, επειδή η τιμή θα χρειαστεί σύντομα από κάποια άλλη εντολή, η load συχνά ξεπερνάει τη store και ξεκινάει τη προσπέλαση μνήμης πριν από αυτήν Παράλληλα Συστήματα 2012 25

Store buffer - λεπτομέρειες Μια εντολή store χρειάζεται δύο τιμές: την τιμή του καταχωρητή που αποθηκεύεται και τη διεύθυνση (συνήθως το άθροισμα ενός καταχωρητή και μιας σταθεράς) Μπορεί η μία από τις δύο τιμές να αργεί να υπολογιστεί γιατί εξαρτάται από μια αλυσίδα εντολών Πώς θα ξέρουν επόμενες load τη διεύθυνση ή την τιμή; Συντηρητικά, μια load πρέπει να περιμένει όλες τις προηγούμενες store που δεν έχουν διεύθυνση αλλά μερικοί επεξεργαστές μπορεί να επιτρέψουν τη load να προσπελάσει τη μνήμη και μετά ελέγχουν για λάθη! Παράλληλα Συστήματα 2012 26

In- Order Fetch In- Order Decode and Register Renaming In- Order Commit Out- of- Order Execuion Out- of- Order Compleion