Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Σχετικά έγγραφα
Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

Συστηματικός έλεγχος ορθότητας ταυτόχρονων προγραμμάτων μέσω γράφου καταστάσεων

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

Εισαγωγικά & Βασικές Έννοιες

Εισαγωγικά & Βασικές Έννοιες

Αμοιβαίος αποκλεισμός με κοινή μνήμη. Ταυτόχρονος Προγραμματισμός 1

Συστηματικός έλεγχος ορθότητας ταυτόχρονων προγραμμάτων μέσω γράφου καταστάσεων

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Συνέπεια μνήμης σε πολυπύρηνα/πολυεπεξεργαστικά συστήματα

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1

Λειτουργικά Συστήματα Η/Υ

Συνοχή κρυφής μνήμης σε πολυπύρηνα/πολυεπεξεργαστικά συστήματα

Βασικές Έννοιες Πρ Ταο υγρ τόα χ μ ρ μ ο α ν τισμ ος Π ό ρ ςο ΙΙΙ γραμματισμός 1

Λειτουργικά Συστήματα

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Προγραμματισμός Ταυτόχρονος Προγραμματισμός

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

Προγραμματισμός Ι (HY120)

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Ε-85: Ειδικά Θέµατα Λογισµικού

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Πληροφορική 2. Γλώσσες Προγραμματισμού

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

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

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

Δομημένος Προγραμματισμός

Ιδιοκτησία Αντικειµένου

Όταν το πρόγραμμα φτάσει σε αυτή την εντολή και ο καταχωρητής PINA έχει την τιμή

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός;

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Δομημένος Προγραμματισμός

ILP (integer linear programming) βασιζόμενη εξαρτώμενη από τους πόρους μεταγλώττιση

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

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

Εισαγωγή στην Πληροφορική

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

Ιδιότητες αντικειμένων, συγγραφή κώδικα, συντακτικά λάθη

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Σειρά Ασκήσεων 13: Συνοχή (Coherence) Κρυφών Μνημών, Προχωρημένοι Επεξεργαστές (Out-of-Order, Superscalar, Multithreading, Multicores)

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

Προγραμματισμός Ι (ΗΥ120)

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

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

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

Αρχιτεκτονικές Συνόλου Εντολών

3 Αλληλεπίδραση Αντικειμένων

Υλοποίηση Σηματοφόρων

Ορθότητα λειτουργίας τμημάτων λογισμικού & δομών δεδομένων υπό ταυτόχρονη εκτέλεση

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

ΟΜΑΔΕΣ ΕΝΤΟΛΩΝ: ΙΔΙΟΤΗΤΕΣ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

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

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

Εισαγωγή στην πληροφορική -4

Ορθότητα λειτουργίας τμημάτων λογισμικού & δομών δεδομένων υπό ταυτόχρονη εκτέλεση

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων

Διαφορές single-processor αρχιτεκτονικών και SoCs

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ

Αρχιτεκτονική Μνήµης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

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

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

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

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

Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32. Αρχείο καταχωρητών και Χάρτης Μνήµης

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

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

Transcript:

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr

Υποθέσεις εργασίας Νήματα/διεργασίες με κοινή μνήμη Αυτόματη διακοπή/εναλλαγή νημάτων/διεργασιών (π.χ. πάνω από 1 CPU δεν κάνει μεγάλη διαφορά) Δεν μας απασχολεί (ιδιαίτερα) το υλικό, ούτε οι λεπτομέρειες υλοποίησης σε επίπεδο συστήματος, ούτε οι λεπτομέρειες της γλώσσας προγραμματισμού Θέλουμε να κάνουμε παρατηρήσεις που έχουν ισχύ για ένα μεγάλο εύρος συστημάτων ΙΙΙ 2 lalis@inf.uth.gr

Απρόβλεπτη ταυτόχρονη εκτέλεση Ο προγραμματιστής δεν ελέγχει (άμεσα) την εκτέλεση/εναλλαγή των νημάτων/διεργασιών Δεν γνωρίζει πότε θα αρχίσει η εκτέλεση ενός νήματος, ούτε σε ποια σημεία θα διακοπεί η εκτέλεση του νήματος για να γίνει εναλλαγή, ούτε σε ποιο νήμα θα δοθεί ο επεξεργαστής Τα σημεία στα οποία γίνεται η εναλλαγή μπορεί να είναι διαφορετικά σε κάθε νέα εκτέλεση Μπορεί να είναι δύσκολο (πρακτικά αδύνατο) να αναπαραχθεί η ίδια («μικτή») εκτέλεση ΙΙΙ 3 lalis@inf.uth.gr

Πρόβλημα στην αποσφαλμάτωση Συμβατική μέθοδος επαλήθευσης ορθότητας: αν το πρόγραμμα επιστρέψει το σωστό αποτέλεσμα Υ για παραμέτρους Χ, τότε θα επιστρέφει Υ κάθε φορά που καλείται με τις ίδιες παραμέτρους Χ Δεν ισχύει: διαφορετικές (μικτές) εκτελέσεις, πιθανώς να δίνουν διαφορετικά αποτελέσματα Συμβατική μέθοδος εντοπισμού σφαλμάτων: αν το πρόγραμμα παρουσιάσει πρόβλημα ή λάθος για παραμέτρους Χ, τότε αυτό θα γίνεται κάθε φορά που καλείται με παραμέτρους Χ Δεν ισχύει: τα λάθη δεν αναπαράγονται εγγυημένα (ίσως να μην εμφανιστούν σε επόμενες εκτελέσεις) ΙΙΙ 4 lalis@inf.uth.gr

Πρόβλημα μη ατομικότητας εντολών Ατομικές εντολές: εκτελούνται εγγυημένα «ολόκληρες», χωρίς παρεμβολή άλλων νημάτων Μια ακολουθία εντολών υψηλού επιπέδου δεν είναι ατομική Ακόμα και μια μοναδική εντολή υψηλού επιπέδου δεν είναι απαραίτητα ατομική μπορεί να μεταφράζεται σε μια ακολουθία εντολών χαμηλού επιπέδου (μηχανής) Ακόμα και οι εντολές μηχανής δεν είναι απαραίτητα ατομικές μπορεί να υλοποιούνται εσωτερικά ως συνδυασμός πιο απλών εντολών Υπό ταυτόχρονη εκτέλεση, μπορεί να ακυρωθούν σχέσεις/αλληλουχίες που φαίνονται «εντελώς προφανείς» σε ψηλό επίπεδο π.χ. πηγαίος κώδικας ΙΙΙ 5 lalis@inf.uth.gr

high-level code i=i+1; low-level code load i,reg add reg 1 store reg,i high-level code if (a) S low-level code L1 load a,reg cmp reg,0 breq L1 S ΙΙΙ 6 lalis@inf.uth.gr

Πρόβλημα μετάδοσης αλλαγών Για την επιτάχυνση της εκτέλεσης, οι τιμές μεταβλητών κρατιούνται συχνά σε καταχωρητές (registers) της CPU ουσιαστικά μια τοπική μνήμη Μπορεί να προκύψουν διάφορα θέματα ασυνέπειας αφού κάθε νήμα μπορεί να αλλάζει τους «δικούς του» καταχωρητές ανεξάρτητα από τα άλλα νήματα Αλλαγές σε κοινές μεταβλητές δεν είναι εγγυημένα (άμεσα) ορατές ανάμεσα σε διαφορετικά νήματα Χρησιμοποιούνται προσδιοριστές (π.χ., volatile) έτσι ώστε η μεταβλητή να γράφεται / διαβάζεται κάθε φορά στην / από την μνήμη ΙΙΙ 7 lalis@inf.uth.gr

high-level code a = 1; a = a + 1; low-level code set reg,1 add reg,1 store reg,a high-level code while (a) {S} low-level code load a,reg L1 cmp reg,0 beq L2 S bra L1 L2 ΙΙΙ 8 lalis@inf.uth.gr

Πρόβλημα μετάδοσης αλλαγών (2) Μεταβλητές/δεδομένα πιθανώς να αποθηκεύονται και να διαβάζονται τμηματικά στην / από την μνήμη long a; a=tmp; store tmp[1],a[1] store tmp[0],a[0] Μπορεί να γίνει αντιμετάθεση εντολών, από τον μεταγλωττιστή ή/και τον επεξεργαστή a=1; b=-1 store b,-1 store a,1 ΙΙΙ 9 lalis@inf.uth.gr

Ένα απλοποιημένο μοντέλο μνήμης Δεν υπάρχουν καταχωρήτες ούτε κρυφή μνήμη Οι τιμές των καθολικών/κοινών μεταβλητών διαβάζονται ατομικά σε τοπικές μεταβλητές Πράξεις γίνονται μόνο σε τοπικές μεταβλητές Οι τιμές των τοπικών μεταβλητών αποθηκεύονται ατομικά στις καθολικές/κοινές μεταβλητές Εστιάζουμε μόνο στο πρόβλημα της (φανερής) μη ατομικότητας μιας ακολουθίας απλών εντολών (σε σχετικά χαμηλό επίπεδο, κοντά στην μηχανή) Αυτό αρκεί για να μελετηθούν/επιλυθούν τα κύρια προβλήματα του ταυτόχρονου προγραμματισμού ΙΙΙ 10 lalis@inf.uth.gr

P1 P2 abstract model CPU local memory load store shared memory load store CPU local memory main memory hardware CPU registers CPU registers cache cache bus ΙΙΙ 11 lalis@inf.uth.gr

Συνθήκη ανταγωνισμού Έστω ότι ο κώδικας Α αποτελείται από μια σειρά εντολών που θέλουμε να εκτελεστούν χωρίς να παρεμβληθεί η εκτέλεση του κώδικα Β που θεωρείται ανταγωνιστικός ως προς τον κώδικα Α Αν αυτό δεν είναι εγγυημένο, τότε λέμε ότι υπάρχει μια συνθήκη ανταγωνισμού (race condition): η σωστή λειτουργία του κώδικα Α εξαρτάται από το αν τελικά θα υπάρξει ανταγωνισμός και την σειρά της μικτής εκτέλεσης του Α σε σχέση με τον Β Οι συνθήκες ανταγωνισμού είναι ανεπιθύμητες (προκύπτουν εύκολα, εντοπίζονται δύσκολα) Κλασικά προβλήματα: ασυνέπεια δεδομένων καθώς και ατέρμονη αναμονή ΙΙΙ 12 lalis@inf.uth.gr

P1 i=i+1; load store i load store P2 i=i+1; ΙΙΙ 13 lalis@inf.uth.gr

high-level code i=i+1; low-level code load i,tmp add tmp 1 store tmp,i symbolic code tmp=i i=tmp+1 ΙΙΙ 14 lalis@inf.uth.gr

int i=0; P1: i=i+1 P2: i=i+1 int i=0; P1: tmp1=i i=tmp1+1 P2: tmp2=i i=tmp2+1 ΙΙΙ 15 lalis@inf.uth.gr

σενάριο (α) P1: tmp1=i P1: i=tmp1+1 P2: tmp2=i P2: i=tmp2+1 i = 2 P1: tmp1=i σενάριο (β) P2: tmp2=i P2: i=tmp2+1 P1: i=tmp1+1 i = 1 ΙΙΙ 16 lalis@inf.uth.gr

P1 P2 rdy=1; WAKEUP; store rdy load if (!rdy) WAIT; ΙΙΙ 17 lalis@inf.uth.gr

high-level code if (!rdy) WAIT low-level code load rdy,tmp cmp tmp,0 bneq L1 WAIT L1 symbolic code tmp=rdy if (!tmp) WAIT ΙΙΙ 18 lalis@inf.uth.gr

int data; int rdy=0; P1: data=; rdy=1; WAKEUP; P2: if (!rdy) WAIT; process(data); int data; int rdy=0; P1: data=; rdy=1; WAKEUP; P2: tmp=rdy; if (!tmp) WAIT; process(data); ΙΙΙ 19 lalis@inf.uth.gr

σενάριο (α) P2: tmp=rdy /* 0 */ P2: if (!tmp) WAIT /*wait*/ P1: data= P1: rdy=1 P1: WAKEUP /* awake */ P2: process(data) το P2 συνεχίζει την εκτέλεση του κανονικά σενάριο (β) P2: tmp=rdy /* 0 */ P1: data= P1: rdy=1 P1: WAKEUP /* nop */ P2: if (!tmp) WAIT /*wait*/ το P2 θα παραμείνει (για πάντα) σε κατάσταση αναμονής Προγραμματισμός ΙΙΙ 20 lalis@inf.uth.gr