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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εντολές γλώσσας μηχανής

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Τι περιέχεται στη συσκευασία ενός μικροεπεξεργαστή σήμερα;

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Διαδικασιακός Προγραμματισμός

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

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

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

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

Προγραμματισμός Υπολογιστών

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

ΠΛΗ10 Κεφάλαιο 2. ΠΛΗ10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή

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

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

Πρόβλημα μετάδοσης αλλαγών Οι καταχωρητές είναι ουσιαστικά μια τοπική μνήμη Μπορεί να προκύψουν διάφορα θέματα ασυνέπειας αφού κάθε νήμα μπορεί και αλλάζει τους καταχωρητές του ανεξάρτητα από τα υπόλοιπα Αλλαγές σε κοινές μεταβλητές δεν είναι εγγυημένα (άμεσα) ορατές ανάμεσα σε διαφορετικά νήματα Χρησιμοποιούνται προσδιοριστές (π.χ., 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) Αλλαγές σε μεταβλητές που ξεπερνούν το μέγεθος της «λέξης» της CPU μπορεί να αποθηκεύονται ή/και να διαβάζονται με μη ατομικά 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

int a=0; long b=0; P1: a=1; b=-1; P2: res = ( (b==0) (b==-1 && a==1) ); υπό ταυτόχρονη εκτέλεση, η res μπορεί να γίνει 0! ΙΙΙ 10 lalis@inf.uth.gr

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

P1 P2 symbolic view CPU local memory load store shared memory load store CPU local memory main memory hardware CPU registers CPU registers cache cache bus ΙΙΙ 12 lalis@inf.uth.gr

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

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

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

int i=0; P1: tmp1=i i=tmp1+1 P2: tmp2=i i=tmp2+1 ΙΙΙ 16 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 ΙΙΙ 17 lalis@inf.uth.gr

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

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

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

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