Τύποι παραλληλισμού. Παράλληλη διαδικασία επεξεργασίας

Στείλτε την καλή δουλειά σας στη βάση γνώσεων είναι απλή. Χρησιμοποιήστε την παρακάτω φόρμα

Καλή δουλειάστον ιστότοπο">

Φοιτητές, μεταπτυχιακοί φοιτητές, νέοι επιστήμονες που χρησιμοποιούν τη βάση γνώσεων στις σπουδές και την εργασία τους θα σας είναι πολύ ευγνώμονες.

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΕΠΙΣΤΗΜΗΣ ΤΗΣ ΔΗΜΟΚΡΑΤΙΑΣ ΤΟΥ ΚΑΖΑΚΣΤΑΝ

Βόρειο Καζακστάν Κρατικό Πανεπιστήμιοτους. M. Kozybaeva

Σχολή Πληροφορικής

Τμήμα Πληροφοριακών Συστημάτων

Παράλληλη διαδικασία επεξεργασίας

Συμπλήρωσε: Makhkambaeva A.S.

Έλεγχος: Kasimov I. R.

Petropavlovsk, 2014

Εισαγωγή

Στα συστήματα ενός επεξεργαστή, εμφανίζεται ο λεγόμενος ψευδοπαραλληλισμός - αν και ανά πάσα στιγμή ο επεξεργαστής είναι απασχολημένος με την επεξεργασία ενός συγκεκριμένη εργασίααπό την άλλη, επιτυγχάνεται η ψευδαίσθηση της παράλληλης εκτέλεσης πολλών εργασιών. Στα συστήματα πολλαπλών επεξεργαστών, η εργασία είναι μέγιστη αποτελεσματική χρήσηκάθε συγκεκριμένος επεξεργαστής λύνεται επίσης με εναλλαγή μεταξύ διεργασιών, αλλά εδώ, μαζί με τον ψευδοπαραλληλισμό, υπάρχει επίσης πραγματικός παραλληλισμός, όταν ενεργοποιείται διαφορετικούς επεξεργαστέςδιαφορετικές διαδικασίες εκτελούνται την ίδια χρονική στιγμή.

Η ιδέα της παραλληλοποίησης της επεξεργασίας δεδομένων βασίζεται στην ιδέα ότι τα περισσότερα προβλήματα μπορούν να χωριστούν σε ένα σύνολο μικρότερων προβλημάτων που μπορούν να επιλυθούν ταυτόχρονα. Οι διεργασίες των οποίων η εκτέλεση επικαλύπτεται τουλάχιστον εν μέρει στο χρόνο ονομάζονται παράλληλες.

Το 1967, ο Gene Amdahl διατύπωσε το νόμο του περιορισμού της αύξησης της παραγωγικότητας κατά τον παραλληλισμό των υπολογισμών: «Στην περίπτωση που μια εργασία χωρίζεται σε πολλά μέρη, ο συνολικός χρόνος εκτέλεσής της κατά παράλληλο σύστημαδεν μπορεί να είναι μικρότερος από τον χρόνο εκτέλεσης του μεγαλύτερου τμήματος." Σύμφωνα με αυτόν τον νόμο, η επιτάχυνση της εκτέλεσης ενός προγράμματος με την παραλληλοποίηση των εντολών του περιορίζεται από το χρόνο που απαιτείται για την εκτέλεση των διαδοχικών εντολών του.

Ταξινόμηση Flynn

προγραμματισμός πρόσβασης συγχρονισμού διεργασιών

Η ταξινόμηση βασίζεται σε δύο έννοιες: ροές εντολών και ροές δεδομένων. Ένα σύστημα με Ν επεξεργαστές έχει Ν μετρητές προγραμμάτων και επομένως Ν νήματα εντολών.

Ροές εντολών

Ροές δεδομένων

Τίτλοι

Το SISD (Single Instruction, Single Data) είναι μια αρχιτεκτονική υπολογιστή στην οποία ένας επεξεργαστής εκτελεί μια ροή εντολών, λειτουργώντας σε μια ροή δεδομένων. Για αυτής της τάξηςμόνο ψευδοπαραλληλισμός είναι δυνατός.

Το SIMD (Single Instruction, Multiple Data) είναι μια αρχιτεκτονική υπολογιστή που επιτρέπει παραλληλισμό σε επίπεδο δεδομένων. Η κύρια ιδέα της προσέγγισης που βασίζεται στον παραλληλισμό δεδομένων είναι ότι μια λειτουργία εκτελείται σε όλα τα στοιχεία του πίνακα δεδομένων ταυτόχρονα. Αυτά τα συστήματα συνήθως έχουν ένας μεγάλος αριθμός απόεπεξεργαστές, από 1024 έως 16384, οι οποίοι μπορούν να εκτελέσουν την ίδια εντολή, που δημιουργείται από μία μονάδα ελέγχου, έναντι διαφορετικών δεδομένων. Σε κάθε δεδομένη στιγμή, κάθε επεξεργαστής εκτελεί την ίδια εντολή, αλλά επεξεργάζεται διαφορετικά δεδομένα. Υλοποιείται μια σύγχρονη παράλληλη υπολογιστική διαδικασία.

Το MISD (Multiple Instruction, Simple Data) είναι μια αρχιτεκτονική υπολογιστή όπου πολλές λειτουργικές μονάδες (δύο ή περισσότερες) εκτελούν διάφορες λειτουργίες στα ίδια δεδομένα. Σε αυτόν τον τύπο ανήκουν υπολογιστές με ανοχή σε σφάλματα που εκτελούν τις ίδιες εντολές περιττές για τον εντοπισμό σφαλμάτων, όπως υποδηλώνει ο ορισμός.

Το MIMD (Multiple Instruction, Multiple Data) είναι μια αρχιτεκτονική υπολογιστή όπου λειτουργούν ως μέρος αρκετοί ανεξάρτητοι επεξεργαστές μεγάλο σύστημα. Η επεξεργασία χωρίζεται σε πολλά νήματα (εξασφαλίζεται ο παραλληλισμός), το καθένα με τη δική του κατάσταση υλικού επεξεργαστή, μέσα σε ένα μόνο καθορισμένο λογισμικόδιαδικασία ή σε πολλαπλές διεργασίες.

Μεταξύ των συστημάτων MIMD, μπορούν να διακριθούν δύο υποκατηγορίες: συστήματα με κοινή μνήμη RAM και συστήματα με κατανεμημένη μνήμη. Ο πρώτος τύπος συστήματος χαρακτηρίζεται από το γεγονός ότι οποιοσδήποτε επεξεργαστής έχει άμεση πρόσβαση σε οποιοδήποτε κελί αυτού του κοινού μνήμη τυχαίας προσπέλασης. Τα συστήματα κατανεμημένης μνήμης είναι συνήθως ένας συνδυασμός κόμβων υπολογιστή. Ένας κόμβος νοείται ως ένας ανεξάρτητος επεξεργαστής με τη δική του τοπική μνήμη RAM. Σε αυτά τα συστήματα, οποιοσδήποτε επεξεργαστής δεν μπορεί να έχει αυθαίρετη πρόσβαση στη μνήμη άλλου επεξεργαστή.

OpenMP (Open Multi-Processing) -- ανοιχτό πρότυπογια παραλληλισμό προγραμμάτων σε γλώσσες C, C++ και Fortran. Περιγράφει ένα σύνολο εντολών που προορίζονται για τον προγραμματισμό πολυνηματικών εφαρμογών σε συστήματα πολλαπλών επεξεργαστών με κοινή μνήμη. Εφαρμογές OpenMP παράλληλος υπολογισμόςμε χρήση πολλαπλών νημάτων, στην οποία ένα «κύριο» νήμα δημιουργεί ένα σύνολο υποτελών νημάτων και η εργασία κατανέμεται μεταξύ τους.

Οι εργασίες που εκτελούνται από νήματα παράλληλα, καθώς και τα δεδομένα που απαιτούνται για την εκτέλεση αυτών των εργασιών, περιγράφονται χρησιμοποιώντας ειδικές οδηγίες προεπεξεργαστή της αντίστοιχης γλώσσας - pragmas. Το πρόγραμμα C πρέπει να περιλαμβάνει το αρχείο "omp.h".

Ο επόμενος βρόχος προσθέτει τους πίνακες "a" και "b" στοιχείο προς στοιχείο. Το μόνο που απαιτείται για την παράλληλη εκτέλεση σε αυτήν την περίπτωση είναι ένα μεμονωμένο πράγμα που εισάγεται αμέσως πριν από τον βρόχο.

#pragma omp parallel for

για (i=0; i< numPixels; i++)

c[i] = a[i]+b[i];

Αυτό το παράδειγμα χρησιμοποιεί "εξισορρόπηση φορτίου" - ένας κοινός όρος που χρησιμοποιείται στο OpenMP για να περιγράψει τη διανομή φόρτο εργασίαςανάμεσα σε νήματα. Όταν η εξισορρόπηση φορτίου χρησιμοποιείται με μια οδηγία for, όπως φαίνεται στο παράδειγμα, οι επαναλήψεις βρόχου κατανέμονται σε πολλαπλά νήματα έτσι ώστε κάθε επανάληψη βρόχου να εκτελείται μόνο μία φορά, παράλληλα από ένα ή περισσότερα νήματα. Το OpenMP καθορίζει πόσα νήματα θα δημιουργηθούν και επίσης καλύτερος τρόποςδημιουργία, συγχρονισμό και καταστροφή νημάτων. Το μόνο που απαιτείται από τον προγραμματιστή είναι να πει στο OpenMP ποιος συγκεκριμένος βρόχος πρέπει να παραλληλιστεί.

Η εξισορρόπηση φορτίου (η κατανομή του φόρτου εργασίας εξίσου μεταξύ των νημάτων) είναι ένα από τα πιο σημαντικά χαρακτηριστικά της παράλληλης εκτέλεσης μιας εφαρμογής. Χωρίς αυτό, ορισμένα νήματα μπορεί να ολοκληρώσουν την εργασία τους πολύ νωρίτερα από άλλα, με αποτέλεσμα να αδρανούν οι υπολογιστικοί πόροι και να χαθεί η απόδοση.

Από προεπιλογή, το OpenMP υποθέτει ότι όλες οι επαναλήψεις βρόχου χρειάζονται τον ίδιο χρόνο. Ως αποτέλεσμα, το OpenMP κατανέμει επαναλήψεις βρόχου περίπου εξίσου μεταξύ των νημάτων και με τέτοιο τρόπο ώστε να ελαχιστοποιεί την πιθανότητα διενέξεων μνήμης λόγω ακατάλληλης κοινής χρήσης μνήμης.

#pragma omp parallel for

για (i=2; i< 10; i++)

παραγοντικός[i] = i * παραγοντικός;

Εάν ο βρόχος πληροί όλους τους περιορισμούς και ο μεταγλωττιστής έχει παραλληλίσει τον βρόχο, αυτό δεν είναι εγγυημένο σωστή λειτουργία, επειδή μπορεί να υπάρχει εξάρτηση δεδομένων.

Υπάρχει εξάρτηση δεδομένων εάν διαφορετικές επαναλήψεις του βρόχου (ακριβέστερα, μια επανάληψη που εκτελείται σε διαφορετικό νήμα) διαβάζουν ή γράφουν κοινόχρηστη μνήμη.

MPI (Διασύνδεση μετάδοσης μηνυμάτων) -- διεπαφή λογισμικούγια μεταφορά πληροφοριών, που επιτρέπει την ανταλλαγή μηνυμάτων μεταξύ διεργασιών που εκτελούν την ίδια εργασία. Το MPI επικεντρώνεται κυρίως σε συστήματα κατανεμημένης μνήμης. Υπάρχουν υλοποιήσεις για γλώσσες Fortran, C και C++.

Στην πρώτη έκδοση του MPI, ο αριθμός των διεργασιών (κλαδιών) ορίζεται τη στιγμή που ξεκινά το πρόγραμμα, δηλ. Δεν υπάρχει τρόπος να δημιουργήσετε υποκαταστήματα δυναμικά. Στην έκδοση 2.0 αυτή η δυνατότητα εμφανίστηκε.

Όταν εκτελείται μια εφαρμογή, όλα τα θυγατρικά κλαδιά της σχηματίζουν μια ομάδα διακλαδώσεων (ένα διατεταγμένο σύνολο κλάδων). Κάθε ομάδα σχετίζεται με ένα «πεδίο επικοινωνίας» που περιγράφει όλους τους συμμετέχοντες στην ανταλλαγή δεδομένων και τα κοινά δεδομένα για όλους τους συμμετέχοντες. Οι διακόπτες χρησιμοποιούνται για την περιγραφή του πεδίου επικοινωνίας. Όλες οι λειτουργίες ανταλλαγής δεδομένων μπορούν να πραγματοποιηθούν μόνο σε ένα πεδίο επικοινωνίας (αυτό διασφαλίζεται με τον έλεγχο των διακοπτών).

Για το C, η γενική μορφή είναι

rc = MPI_Xxxxx(παράμετρος, ...);

Σημειώστε ότι η υπόθεση είναι σημαντική εδώ. Για παράδειγμα, το MPI πρέπει να είναι κεφαλαίο, όπως και το πρώτο γράμμα μετά την υπογράμμιση. Όλοι οι επόμενοι χαρακτήρες πρέπει να είναι με πεζούς χαρακτήρες. Η μεταβλητή rc είναι ένας συγκεκριμένος κωδικός επιστροφής που έχει ολόκληρου τύπου. Εάν είναι επιτυχής, ορίζεται σε MPI_SUCCESS. Το πρόγραμμα C πρέπει να περιλαμβάνει το αρχείο "mpi.h".

Τα μηνύματα MPI αποτελούνται από δύο κύρια μέρη: τα δεδομένα που αποστέλλονται/λαμβάνονται και τις συνοδευτικές πληροφορίες (εγγραφές φακέλων) που βοηθούν στην αποστολή των δεδομένων σε μια συγκεκριμένη διαδρομή.

Τα δεδομένα αντιστοιχούν στην αρχή του buffer, τον αριθμό, τον τύπο δεδομένων. Ένα buffer είναι απλώς η μνήμη που ο μεταγλωττιστής έχει εκχωρήσει σε μια μεταβλητή (συχνά έναν πίνακα) του προγράμματός σας. Έναρξη buffer είναι η διεύθυνση όπου ξεκινούν τα δεδομένα. Για παράδειγμα, η αρχή ενός πίνακα στο πρόγραμμά σας. Αριθμός - ο αριθμός των στοιχείων (όχι byte!) δεδομένων στο μήνυμα. Ο τύπος δεδομένων καθορίζει το μέγεθος ενός μεμονωμένου στοιχείου.

Οι πληροφορίες "στο εξώφυλλο" περιλαμβάνουν την κατάταξη στον επικοινωνιοδότη - το αναγνωριστικό διαδικασίας στο πεδίο επικοινωνίας, την ετικέτα - έναν αυθαίρετο αριθμό που βοηθά στη διάκριση των μηνυμάτων και τον ίδιο τον επικοινωνητή, η επαλήθευση του οποίου διασφαλίζει τη μετάδοση σε ένα πεδίο επικοινωνίας.

Παράλληλη επεξεργασία δεδομένων

Υπάρχουν διάφοροι τρόποι διαχωρισμού των ευθυνών μεταξύ των διαδικασιών:

* αντιπροσωπεία («διευθυντής-εργαζόμενος»).

* δίκτυο peer-to-peer.

* Μεταφορέας?

* «κατασκευαστής-καταναλωτής».

Κάθε μοντέλο έχει τη δική του δομή ανάλυσης εργασίας, η οποία καθορίζει ποιος είναι υπεύθυνος για τη δημιουργία νημάτων και υπό ποιες συνθήκες δημιουργούνται.

Στο μοντέλο ανάθεσης, ένα νήμα (ο «διαχειριστής») δημιουργεί νήματα (οι «εργάτες») και αναθέτει μια εργασία σε καθένα από αυτά. Το νήμα ελέγχου πρέπει να περιμένει έως ότου όλα τα νήματα ολοκληρώσουν τις εργασίες τους. Το νήμα ελέγχου αναθέτει την εργασία που πρέπει να εκτελέσει κάθε νήμα εργαζομένου, καθορίζοντας κάποια λειτουργία. Μαζί με την εργασία, στο νήμα εργασίας ανατίθεται επίσης η ευθύνη για την εφαρμογή του και την απόκτηση αποτελεσμάτων. Επιπλέον, στο στάδιο της λήψης αποτελεσμάτων, είναι δυνατός ο συγχρονισμός των ενεργειών με το νήμα ελέγχου (ή άλλο).

Ενώ στο μοντέλο ανάθεσης υπάρχει ένα νήμα ελέγχου που αναθέτει εργασίες σε νήματα εργαζομένων, στο μοντέλο ομοτίμων όλα τα νήματα έχουν την ίδια κατάσταση εργασίας. Αν και υπάρχει ένα νήμα που αρχικά δημιουργεί όλα τα νήματα που απαιτούνται για την ολοκλήρωση όλων των εργασιών, αυτό το νήμα θεωρείται νήμα εργασίας, αλλά δεν εκτελεί καμία λειτουργία ανάθεσης εργασιών. Σε αυτό το μοντέλο, δεν υπάρχει κεντρικό νήμα, αλλά τα νήματα εργαζομένων έχουν μεγαλύτερη ευθύνη. Όλα τα ομότιμα ​​νήματα μπορούν να επεξεργάζονται αιτήματα από την ίδια ροή δεδομένων εισόδου ή κάθε νήμα εργασίας μπορεί να έχει τη δική του ροή δεδομένων εισόδου για την οποία είναι υπεύθυνο. Τα νήματα εργαζομένων μπορεί να χρειαστεί να επικοινωνήσουν και να μοιραστούν πόρους.

Το μοντέλο μεταφορέα είναι παρόμοιο με μια γραμμή συναρμολόγησης στο ότι περιλαμβάνει μια ροή αντικειμένων που υποβάλλονται σε επεξεργασία σε στάδια. Σε κάθε στάδιο, ένα ξεχωριστό νήμα εκτελεί ορισμένες λειτουργίες σε ένα συγκεκριμένο σύνολο δεδομένων εισόδου. Όταν αυτό το σύνολο δεδομένων έχει περάσει από όλα τα στάδια, η επεξεργασία ολόκληρης της ροής δεδομένων εισόδου θα ολοκληρωθεί. Αυτή η προσέγγιση σάς επιτρέπει να επεξεργάζεστε πολλαπλές ροές εισόδου ταυτόχρονα. Κάθε νήμα είναι υπεύθυνο για την παραγωγή ενδιάμεσων αποτελεσμάτων, καθιστώντας τα διαθέσιμα στο επόμενο στάδιο (ή το επόμενο νήμα) στη διαδικασία Τελικό στάδιο(ή νήμα) δημιουργεί τα αποτελέσματα του αγωγού στο σύνολό του.

Στο μοντέλο παραγωγού-καταναλωτή, υπάρχει ένα νήμα παραγωγού που προετοιμάζει τα δεδομένα που καταναλώνονται από το νήμα καταναλωτή. Τα δεδομένα αποθηκεύονται σε ένα μπλοκ μνήμης που μοιράζεται μεταξύ των νημάτων παραγωγού και καταναλωτή. Το νήμα παραγωγού πρέπει πρώτα να προετοιμάσει τα δεδομένα, τα οποία στη συνέχεια θα λάβει το νήμα του καταναλωτή. Αυτή η διαδικασία απαιτεί συγχρονισμό. Εάν το νήμα παραγωγού παράγει δεδομένα πολύ πιο γρήγορα από ό,τι το νήμα καταναλωτή μπορεί να τα καταναλώσει, το νήμα παραγωγού θα αντικαταστήσει τα αποτελέσματα που έλαβε προηγουμένως αρκετές φορές πριν το νήμα καταναλωτή προλάβει να τα επεξεργαστεί. Αλλά εάν το νήμα καταναλωτή λαμβάνει δεδομένα πολύ πιο γρήγορα από ό,τι μπορεί να του παρέχει το νήμα του παραγωγού, το νήμα καταναλωτή είτε θα επανεπεξεργαστεί τα δεδομένα που έχει ήδη επεξεργαστεί είτε θα προσπαθήσει να δεχτεί δεδομένα που δεν έχουν ακόμη προετοιμαστεί.

Σύγχρονες και ασύγχρονες διεργασίες

Οι σύγχρονες διεργασίες είναι διεργασίες με διαλείπουσα εκτέλεση, όπου μια διεργασία αναστέλλει την εκτέλεσή της μέχρι να ολοκληρωθεί η άλλη. Για παράδειγμα, η διαδικασία Α, ο γονέας, όταν εκτελείται, δημιουργεί τη διαδικασία Β, το παιδί. Η διεργασία Α διακόπτει την εκτέλεσή της μέχρι να τερματιστεί η διεργασία Β. Όταν η διεργασία Β τερματιστεί, ο κωδικός εξόδου της τοποθετείται στον πίνακα διεργασίας. Αυτό ειδοποιεί τη διαδικασία Α ότι η διεργασία Β έχει τερματιστεί. Η διαδικασία Α μπορεί να συνεχίσει να εκτελείται και στη συνέχεια να τερματιστεί ή να τερματιστεί αμέσως.

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

Οι ασύγχρονες διεργασίες μπορούν να μοιράζονται πόρους όπως αρχεία ή μνήμη. Αυτό μπορεί να απαιτεί συγχρονισμό ή αλληλεπίδραση κατά την κοινή χρήση πόρων.

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

Ο συγχρονισμός είναι απαραίτητος σε κάθε περίπτωση που χρειάζεται να αλληλεπιδράσουν παράλληλες διεργασίες. Για την οργάνωσή του, χρησιμοποιούνται μέσα επικοινωνίας μεταξύ των διεργασιών. Μεταξύ των εργαλείων που χρησιμοποιούνται πιο συχνά είναι τα σήματα και τα μηνύματα, οι σηματοφόροι και οι mutexes, οι σωλήνες και η κοινή μνήμη.

Διαδικαστική επικοινωνία

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

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

Ένα μήνυμα είναι μια μέθοδος αλληλεπίδρασης όταν μια διεργασία στέλνει ένα μήνυμα σε μια δεύτερη και αυτή η διεργασία το λαμβάνει. Εάν το μήνυμα δεν φτάσει, η δεύτερη διαδικασία μπλοκάρεται (αναμονή για μήνυμα) ή επιστρέφει αμέσως έναν κωδικό σφάλματος.

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

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

Ένας σηματοφόρος είναι ένα αντικείμενο που επιτρέπει σε όχι περισσότερες από n διεργασίες να εισαγάγουν ένα δεδομένο τμήμα κώδικα (συνήθως ένα κρίσιμο τμήμα).

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

1) init(n); - αρχικοποίηση του μετρητή (ο αριθμός που μεταβιβάζεται στον μετρητή είναι ο αριθμός των διεργασιών που μπορούν ταυτόχρονα να έχουν πρόσβαση στο κρίσιμο τμήμα)

2) περιμένετε(); - περιμένετε μέχρι ο μετρητής να γίνει μεγαλύτερος από 0. Μετά από αυτό, μειώστε τον μετρητή κατά ένα.

3) leave(); - αυξήστε τον μετρητή κατά ένα.

Πριν μια διεργασία αποκτήσει πρόσβαση στο κρίσιμο τμήμα, είναι απαραίτητο να καλέσετε τη μέθοδο αναμονής (), μετά την οποία είναι εγγυημένο ότι ο αριθμός των διεργασιών που προσεγγίζουν ταυτόχρονα αυτήν δεν υπερβαίνει το n-1. Στη συνέχεια, η διαδικασία μπορεί να συνεχίσει να λειτουργεί και να εκτελέσει τη μέθοδο leave() μετά την εργασία με το κρίσιμο τμήμα, ενημερώνοντας έτσι τις άλλες διεργασίες ότι "ο χώρος έχει γίνει ελεύθερος".

Εάν ο αριθμός των κλήσεων στις μεθόδους wait() και leave() δεν ταιριάζει, τότε το σύστημα δεν θα λειτουργήσει σωστά, όπως στην περίπτωση αδιεξόδου διεργασιών - μια κατάσταση στην οποία πολλές διεργασίες βρίσκονται σε ατελείωτη κατάσταση αναμονής. πόροι που καταλαμβάνονται από αυτές τις ίδιες τις διαδικασίες:

Διαδικασία 1

Διαδικασία 2

Θέλει να συλλάβει το Α και το Β, ξεκινά με το Α

Θέλει να συλλάβει το Α και το Β, ξεκινά με το Β

Καταγράφει τον πόρο Α

Καταγράφει τον πόρο Β

Αναμονή για τον πόρο Β να γίνει δωρεάν

Αναμονή για τον πόρο Α να γίνει δωρεάν

Αμοιβαίο μπλοκάρισμα

Τα αδιέξοδα εντοπισμού σφαλμάτων, όπως και άλλα σφάλματα συγχρονισμού, περιπλέκονται από το γεγονός ότι απαιτούν συγκεκριμένες συνθήκες για την ταυτόχρονη εκτέλεση πολλών διεργασιών (στο παράδειγμα που περιγράφεται παραπάνω, εάν η διεργασία 1 είχε καταφέρει να αποκτήσει τον πόρο Β πριν από τη διαδικασία 2, το σφάλμα θα δεν έχουν συμβεί).

Τα mutexe είναι οι απλούστεροι δυαδικοί σηματοφόροι που μπορούν να βρίσκονται σε μία από τις δύο καταστάσεις - με σήμανση ή χωρίς επισήμανση (ανοιχτό και κλειστό, αντίστοιχα). Όταν οποιοδήποτε νήμα που ανήκει σε οποιαδήποτε διεργασία γίνεται κάτοχος ενός αντικειμένου mutex, το τελευταίο τοποθετείται σε κατάσταση χωρίς ετικέτα. Εάν μια εργασία απελευθερώσει ένα mutex, η κατάστασή του ελέγχεται.

Ο σκοπός ενός mutex είναι να προστατεύσει ένα αντικείμενο από την πρόσβαση από άλλα νήματα εκτός από αυτό που απέκτησε το mutex. Σε κάθε δεδομένη στιγμή, μόνο ένα νήμα μπορεί να κατέχει ένα αντικείμενο που προστατεύεται από ένα mutex. Εάν ένα άλλο νήμα χρειάζεται πρόσβαση σε μια μεταβλητή που προστατεύεται από ένα mutex, τότε αυτό το νήμα τίθεται σε αδράνεια μέχρι να απελευθερωθεί το mutex.

Το Test-and-set είναι μια απλή, χωρίς διακοπή (ατομική) εντολή επεξεργαστή που αντιγράφει την τιμή μιας μεταβλητής σε έναν καταχωρητή και ορίζει κάποια νέα τιμή. Ενώ εκτελείται αυτή η εντολή, ο επεξεργαστής δεν μπορεί να διακόψει την εκτέλεσή της και να μεταβεί στην εκτέλεση άλλου νήματος. Εάν χρησιμοποιείται αρχιτεκτονική πολλαπλών επεξεργαστών, τότε ενώ ένας επεξεργαστής εκτελεί αυτήν την εντολή με ένα κελί μνήμης, τότε άλλοι επεξεργαστές δεν μπορούν να έχουν πρόσβαση σε αυτό το κελί.

Ο αλγόριθμος του Dekker είναι η πρώτη γνωστή σωστή λύση στο πρόβλημα του αμοιβαίου αποκλεισμού στον ανταγωνιστικό προγραμματισμό. Επιτρέπει σε δύο νήματα εκτέλεσης να μοιράζονται έναν μη κοινόχρηστο πόρο χωρίς να προκαλούνται διενέξεις, χρησιμοποιώντας μόνο κοινόχρηστη μνήμη για επικοινωνία.

Εάν δύο διεργασίες προσπαθήσουν να εισέλθουν στο κρίσιμο τμήμα ταυτόχρονα, ο αλγόριθμος θα επιτρέψει μόνο σε μία από αυτές να το κάνει, με βάση ποιανού ουρά βρίσκεται εκείνη τη στιγμή. Εάν μια διεργασία έχει ήδη εισέλθει στην κρίσιμη ενότητα, η άλλη θα περιμένει μέχρι να φύγει η πρώτη. Αυτό υλοποιείται με τη χρήση δύο σημαιών (δείκτες της «πρόθεσης» για είσοδο στο κρίσιμο τμήμα) και της μεταβλητής turn (που υποδεικνύει ποια διαδικασία έφτασε η σειρά).

Ένα από τα πλεονεκτήματα του αλγορίθμου είναι ότι δεν απαιτεί ειδικές οδηγίες Test-and-set και, ως εκ τούτου, είναι εύκολα φορητός σε διαφορετικές γλώσσεςπρογραμματισμού και αρχιτεκτονικής υπολογιστών. Τα μειονεκτήματα περιλαμβάνουν τη δυνατότητα εφαρμογής του στην περίπτωση με δύο μόνο διεργασίες και τη χρήση της αναμονής Απασχολημένος αντί της αναστολής της διαδικασίας (η χρήση της αναμονής απασχολημένου συνεπάγεται ότι οι διεργασίες πρέπει να περνούν ελάχιστο χρόνο μέσα στο κρίσιμο τμήμα).

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

Πριν ξεκινήσει η εκτέλεση του κρίσιμου τμήματος, το νήμα πρέπει να καλέσει μια ειδική διαδικασία (ας την ονομάσουμε EnterRegion) με παράμετρο τον αριθμό του. Πρέπει να κανονίσει ένα νήμα να περιμένει την ουρά του να μπει στο κρίσιμο τμήμα. Μετά την εκτέλεση του κρίσιμου τμήματος και την αποχώρησή του, το νήμα καλεί μια άλλη διαδικασία (ας την ονομάσουμε LeaveRegion), μετά από την οποία άλλα νήματα θα μπορούν να εισέλθουν στην κρίσιμη περιοχή.

Γενική αρχή του αλγορίθμου Peterson για 2 νήματα:

Δημοσιεύτηκε στο http://www.allbest.ru/

Σχεδιασμός διαδικασίας

Προγραμματισμός - εξασφάλιση διαδοχικής πρόσβασης διεργασιών σε έναν επεξεργαστή.

Ο προγραμματιστής είναι το μέρος του λειτουργικού συστήματος που είναι υπεύθυνο για αυτό.

Αλγόριθμος μη προληπτικού προγραμματισμού (μη προτεραιότητας) - δεν απαιτεί διακοπή χρονοδιακόπτη υλικού, η διαδικασία σταματά μόνο όταν μπλοκάρει ή εξέρχεται.

Αλγόριθμος προληπτικού προγραμματισμού (προτεραιότητα) - απαιτεί διακοπή χρονοδιακόπτη υλικού, η διαδικασία εκτελείται μόνο για μια καθορισμένη χρονική περίοδο, μετά την οποία αναστέλλεται από έναν χρονοδιακόπτη για τη μεταφορά του ελέγχου στον προγραμματιστή.

Οι διεργασίες τοποθετούνται σε ουρές προτεραιότητας σύμφωνα με τη στρατηγική Προγραμματισμού. Τα συστήματα UNIX/Linux χρησιμοποιούν δύο στρατηγικές προγραμματισμού: FIFO (συντομογραφία First In First Out) και RR (συντομογραφία για round-robin).

Όταν χρησιμοποιείτε τη στρατηγική FIFO, οι διεργασίες εκχωρούνται στον επεξεργαστή σύμφωνα με την ώρα που φτάνουν στην ουρά.

Ο προγραμματισμός RR είναι ο ίδιος με τον προγραμματισμό FIFO με μία εξαίρεση: αφού λήξει το χρονικό slice, η διαδικασία τοποθετείται στο τέλος της ουράς προτεραιότητας και η επόμενη διεργασία στην ουρά ανατίθεται στον επεξεργαστή.

Για την παροχή παράλληλη εργασίαδιαδικασίες, ο προγραμματισμός προτεραιότητας μπορεί να είναι κατάλληλος. Σε κάθε διαδικασία εκχωρείται μια προτεραιότητα και ο έλεγχος μεταφέρεται στη διαδικασία με την υψηλότερη προτεραιότητα. Η προτεραιότητα μπορεί να είναι δυναμική ή στατική. Η δυναμική προτεραιότητα μπορεί να οριστεί ως εξής: P = 1/T, όπου T είναι το μέρος του κβαντικού που χρησιμοποιήθηκε τελευταία (εάν χρησιμοποιείται το 1/50 του κβαντικού, τότε η προτεραιότητα είναι 50. Εάν χρησιμοποιείται ολόκληρο το κβάντο, τότε η προτεραιότητα είναι 1).

Οι διεργασίες συχνά ομαδοποιούνται κατά προτεραιότητα και χρησιμοποιούν προγραμματισμό προτεραιότητας μεταξύ των ομάδων, αλλά εντός της ομάδας χρησιμοποιούν προγραμματισμό κυκλικής ανάλυσης.

Δημοσιεύτηκε στο Allbest.ur

Παρόμοια έγγραφα

    Δομή, ειδικότητα και αρχιτεκτονική συστημάτων πολλαπλών επεξεργαστών. Ταξινόμηση Flynn. Οργάνωση αμοιβαίου αποκλεισμού για συγχρονισμό της πρόσβασης σε κοινόχρηστους πόρους. Απενεργοποίηση διακοπών. σηματοφόροι με προγράμματα οδήγησης συσκευών. Συστάδες διανομής φορτίου.

    εργασία μαθήματος, προστέθηκε 06/07/2014

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

    παρουσίαση, προστέθηκε 24/01/2014

    Βελτίωση των παραμέτρων της μονάδας μνήμης. Λειτουργία και αλληλεπίδραση του λειτουργικού συστήματος με τη μνήμη RAM. Ανάλυση των κύριων τύπων και παραμέτρων RAM. Το τμήμα λογισμικού επεξεργάζεται την εκτέλεση εντολών και τις τοποθετεί στη μνήμη RAM.

    εργασία μαθήματος, προστέθηκε 12/02/2009

    Κύριες λειτουργίες και διαδικασίες του υποσυστήματος διαχείρισης διεργασιών. Διαδικασίες αποστολής (νήματα). Αλγόριθμοι για τον προγραμματισμό της εκτέλεσης του νήματος. Σκοπός και είδη προτεραιοτήτων σε λειτουργικά συστήματαΩ. Λειτουργίες του κύριου υποσυστήματος διαχείρισης μνήμης.

    παρουσίαση, προστέθηκε 20/12/2013

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

    διατριβή, προστέθηκε 09.09.2010

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

    εργασία μαθήματος, προστέθηκε 21/06/2013

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

    εργασία μαθήματος, προστέθηκε 21/06/2013

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

    διάλεξη, προστέθηκε 02/05/2009

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

    παρουσίαση, προστέθηκε 24/07/2013

    Ταξινόμηση των παράλληλων αεροσκαφών. Συστήματα με κοινόχρηστη και κατανεμημένη μνήμη. Σωληνώσεις λειτουργίας. Απόδοση ιδανικού μεταφορέα. Υπερκλιμακωτές αρχιτεκτονικές. Αρχιτεκτονική VLIW. Πρόβλεψη μετάβασης. Επεξεργαστές Matrix. Οι νόμοι του Amdahl και του Gustafson.

Ένας υπερυπολογιστής είναι ένας πολύ ισχυρός υπολογιστής με απόδοση άνω των 10 MFLOPS. Σήμερα αυτό το αποτέλεσμα καλύπτεται όχι μόνο από σταθμούς εργασίας, αλλά και από κορυφαία απόδοσηκαι Η/Υ. Στις αρχές της δεκαετίας του 1990, το όριο είχε ήδη καθοριστεί γύρω από το όριο των 300 MFLOPS. Το 2001, ειδικοί από δύο κορυφαίες χώρες «υπερυπολογιστή», τις ΗΠΑ και την Ιαπωνία, συμφώνησαν να ανεβάσουν τον πήχη στα 5 GFLOPS.

Έτσι, τα κύρια χαρακτηριστικά που χαρακτηρίζουν έναν υπερυπολογιστή είναι τα ακόλουθα:

  • υψηλότερη απόδοση?
  • το πιο σύγχρονο τεχνολογικό επίπεδο (για παράδειγμα, τεχνολογία GaAs).
  • συγκεκριμένες αρχιτεκτονικές λύσεις που στοχεύουν στην αύξηση της απόδοσης (για παράδειγμα, η παρουσία λειτουργιών σε διανύσματα).
  • τιμή, συνήθως πάνω από 1-2 εκατομμύρια δολάρια.

Ποιος παράγοντας είναι καθοριστικός για την επίτευξη των σημερινών φανταστικών επιπέδων απόδοσης; Ας στραφούμε στο ιστορικά γεγονότα. Σε έναν από τους πρώτους υπολογιστές EDSAC (1949), ο οποίος είχε χρόνο ρολογιού 2 μs, ήταν δυνατό να εκτελεστεί κατά μέσο όρο 100 αριθμητικές πράξειςανά δευτερόλεπτο. ΕΝΑ κορυφαία απόδοση υπερυπολογιστής CRAY C90 με χρόνο ρολογιού περίπου 4 ns - περίπου 1 δισεκατομμύριο αριθμητικές πράξεις ανά δευτερόλεπτο. Ετσι, εκτέλεσηΚατά τη διάρκεια αυτής της περιόδου, η ταχύτητα των υπολογιστών αυξήθηκε περίπου 10 εκατομμύρια φορές, αλλά ο χρόνος κύκλου του ρολογιού μειώθηκε μόνο 500 φορές. Ως εκ τούτου, αύξηση της παραγωγικότηταςσυνέβη λόγω άλλων παραγόντων, ο σημαντικότερος μεταξύ των οποίων είναι η χρήση νέων αρχιτεκτονικές λύσεις, ιδίως - η αρχή παράλληλη επεξεργασία δεδομένων.

Έχει δύο ποικιλίες: αγωγού και παράλληλη.

Ιδέα μεταφορική επεξεργασίασυνίσταται στην ανάδειξη επιμέρους σταδίων εκτέλεσης γενική λειτουργία, και με τέτοιο τρόπο ώστε κάθε στάδιο, έχοντας ολοκληρώσει την εργασία του, να μεταδίδει το αποτέλεσμα στο επόμενο, ενώ ταυτόχρονα δέχεται ένα νέο τμήμα δεδομένων εισόδου. Το κέρδος στην ταχύτητα επεξεργασίας δεδομένων επιτυγχάνεται με το συνδυασμό λειτουργιών που είχαν προηγουμένως διαχωριστεί.

Παράλληλη επεξεργασία δεδομένωνπροϋποθέτει την παρουσία πολλών λειτουργικά ανεξάρτητων συσκευών.

Νόμος του Amdahl

Νόμος του Amdahl

μικρό<= 1/

όπου S είναι η επιτάχυνση, f είναι η αναλογία των λειτουργιών που πρέπει να εκτελεστούν διαδοχικά, p είναι ο αριθμός των επεξεργαστών.

Συμπέρασμα από Ο νόμος του Amdahl: για να επιταχυνθεί η εκτέλεση ενός προγράμματος κατά q φορές, είναι απαραίτητο να επιταχυνθεί τουλάχιστον q φορές και τουλάχιστον το (1-1/q)ο μέρος του προγράμματος. Επομένως, εάν πρέπει να επιταχύνετε ένα πρόγραμμα κατά 100 φορές σε σύγκριση με τη διαδοχική του έκδοση, τότε δεν χρειάζεται να έχετε λιγότερη επιτάχυνση τουλάχιστον στο 99,99% του κώδικα!

Η ιστορία της εμφάνισης του παραλληλισμού στην αρχιτεκτονική των υπολογιστών

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

  • 1974 - ALLIAC: επεξεργαστές matrix (CU + matrix 64 επεξεργαστών).
  • 1976 - CRAY1: vector-pipeline επεξεργαστές. Εισαγωγή διανυσματικών εντολών που λειτουργούν με ολόκληρους πίνακες ανεξάρτητων δεδομένων.
  • Πού οφείλεται η αύξηση της απόδοσης του υπολογιστή;

    Γιατί οι υπερυπολογιστές υπολογίζουν τόσο γρήγορα; Μπορεί να υπάρχουν πολλές επιλογές απάντησης, μεταξύ των οποίων δύο έχουν ένα σαφές πλεονέκτημα: η ανάπτυξη της βάσης στοιχείων και η χρήση νέων λύσεων στην αρχιτεκτονική υπολογιστών.

    Ας προσπαθήσουμε να καταλάβουμε ποιος από αυτούς τους παράγοντες είναι καθοριστικός για την επίτευξη ρεκόρ απόδοσης. Ας στραφούμε σε γνωστά ιστορικά γεγονότα. Σε έναν από τους πρώτους υπολογιστές στον κόσμο - τον EDSAC, ο οποίος εμφανίστηκε το 1949 στο Cambridge και είχε χρόνο ρολογιού 2 μικροδευτερόλεπτα (2 * 10-6 δευτερόλεπτα), ήταν δυνατό να εκτελεστούν 2 * n αριθμητικές πράξεις σε 18 * n χιλιοστά του δευτερολέπτου , δηλαδή κατά μέσο όρο 100 αριθμητικές πράξεις ανά δευτερόλεπτο. Ας συγκρίνουμε με έναν υπολογιστικό κόμβο ενός σύγχρονου υπερυπολογιστή Hewlett-Packard V2600: ο χρόνος ρολογιού είναι περίπου 1,8 νανοδευτερόλεπτα (1,8 * 10-9 δευτερόλεπτα) και η μέγιστη απόδοση είναι περίπου 77 δισεκατομμύρια αριθμητικές πράξεις ανά δευτερόλεπτο.

    Τι συμβαίνει; Πάνω από μισό αιώνα, η απόδοση του υπολογιστή έχει αυξηθεί κατά περισσότερο από επτακόσια εκατομμύριαμια φορά. Ταυτόχρονα, το κέρδος απόδοσης που σχετίζεται με τη μείωση του χρόνου κύκλου ρολογιού από 2 μικροδευτερόλεπτα σε 1,8 νανοδευτερόλεπτα είναι μόνο περίπου 1000 φορές. Από πού προήλθαν τα υπόλοιπα; Η απάντηση είναι προφανής - η χρήση νέων λύσεων στην αρχιτεκτονική των υπολογιστών. Η κύρια θέση μεταξύ αυτών καταλαμβάνεται από την αρχή της παράλληλης επεξεργασίας δεδομένων, η οποία ενσωματώνει την ιδέα της ταυτόχρονης (παράλληλης) εκτέλεσης πολλών ενεργειών.

    Η παράλληλη επεξεργασία δεδομένων, που ενσωματώνει την ιδέα της ταυτόχρονης εκτέλεσης πολλών ενεργειών, έχει δύο ποικιλίες: διοχέτευση και πραγματικό παραλληλισμό. Και οι δύο τύποι παράλληλης επεξεργασίας είναι διαισθητικοί, επομένως θα κάνουμε μόνο μικρές επεξηγήσεις.

    Παράλληλη επεξεργασία. Εάν μια συγκεκριμένη συσκευή εκτελεί μία λειτουργία ανά μονάδα χρόνου, τότε θα εκτελέσει χίλιες λειτουργίες σε χίλιες μονάδες. Αν υποθέσουμε ότι υπάρχουν πέντε πανομοιότυπες ανεξάρτητες συσκευές ικανές να λειτουργούν ταυτόχρονα, τότε ένα σύστημα πέντε συσκευών μπορεί να εκτελέσει τις ίδιες χιλιάδες λειτουργίες όχι σε χίλιες, αλλά σε διακόσιες μονάδες χρόνου. Ομοίως, ένα σύστημα Ν συσκευών θα εκτελεί την ίδια εργασία σε 1000/N μονάδες χρόνου. Παρόμοιες αναλογίες μπορούν να βρεθούν στη ζωή: αν ένας στρατιώτης σκάψει έναν κήπο σε 10 ώρες, τότε μια ομάδα πενήντα στρατιωτών με τις ίδιες ικανότητες, που εργάζονται ταυτόχρονα, θα αντιμετωπίσει την ίδια δουλειά σε 12 λεπτά - η αρχή του παραλληλισμού σε δράση!

    Παρεμπιπτόντως, ο πρωτοπόρος στην παράλληλη επεξεργασία των ροών δεδομένων ήταν ο ακαδημαϊκός A.A. Samarsky, ο οποίος έκανε τους απαραίτητους υπολογισμούς για την προσομοίωση πυρηνικών εκρήξεων στις αρχές της δεκαετίας του '50. Ο Samarsky έλυσε αυτό το πρόβλημα καθίζοντας πολλές δεκάδες νεαρές κυρίες με μηχανήματα προσθήκης σε τραπέζια. Οι νεαρές κυρίες μετέφεραν δεδομένα η μία στην άλλη απλά με λόγια και έβαλαν τους απαραίτητους αριθμούς για την προσθήκη μηχανών. Έτσι, συγκεκριμένα, υπολογίστηκε η εξέλιξη του κύματος έκρηξης. Υπήρχε πολλή δουλειά, οι νεαρές κυρίες ήταν κουρασμένες και ο Αλέξανδρος Αντρέεβιτς περπάτησε ανάμεσά τους και τις ενθάρρυνε. Αυτό, θα έλεγε κανείς, ήταν το πρώτο παράλληλο σύστημα. Αν και οι υπολογισμοί για τη βόμβα υδρογόνου έγιναν αριστοτεχνικά, η ακρίβειά τους ήταν πολύ χαμηλή, επειδή υπήρχαν λίγοι κόμβοι στο πλέγμα που χρησιμοποιήθηκε και ο χρόνος υπολογισμού ήταν πολύ μεγάλος.



    Επεξεργασία μεταφορέα. Τι χρειάζεται για να προσθέσουμε δύο πραγματικούς αριθμούς που αντιπροσωπεύονται σε μορφή κινητής υποδιαστολής; Πολλές μικρές λειτουργίες, όπως σύγκριση παραγγελιών, ευθυγράμμιση παραγγελιών, προσθήκη μάντισσας, κανονικοποίηση κ.λπ. Οι επεξεργαστές των πρώτων υπολογιστών εκτέλεσαν όλες αυτές τις «μικρο-λειτουργίες» για κάθε ζεύγος ορισμάτων, το ένα μετά το άλλο, μέχρι να φτάσουν στο τελικό αποτέλεσμα και μόνο τότε προχώρησαν στην επεξεργασία του επόμενου ζεύγους όρων.

    Η ιδέα της επεξεργασίας του αγωγού είναι να απομονωθούν μεμονωμένα στάδια εκτέλεσης μιας γενικής λειτουργίας και κάθε στάδιο, έχοντας ολοκληρώσει την εργασία του, θα περνούσε το αποτέλεσμα στο επόμενο, ενώ ταυτόχρονα θα λάμβανε ένα νέο τμήμα δεδομένων εισόδου. Λαμβάνουμε ένα προφανές κέρδος στην ταχύτητα επεξεργασίας συνδυάζοντας προηγουμένως διαχωρισμένες λειτουργίες. Ας υποθέσουμε ότι υπάρχουν πέντε μικροεπεμβάσεις σε μια πράξη, καθεμία από τις οποίες εκτελείται σε μία μονάδα χρόνου. Εάν υπάρχει μία αδιαίρετη σειριακή συσκευή, τότε θα επεξεργαστεί 100 ζεύγη ορισμάτων σε 500 μονάδες. Εάν κάθε μικρολειτουργία χωρίζεται σε ένα ξεχωριστό στάδιο (ή αλλιώς ονομάζεται στάδιο) μιας συσκευής μεταφοράς, τότε στην πέμπτη μονάδα χρόνου, σε διαφορετικά στάδια επεξεργασίας μιας τέτοιας συσκευής, θα εντοπιστούν τα πρώτα πέντε ζεύγη ορισμάτων , και ολόκληρο το σύνολο των εκατό ζευγών θα υποβληθεί σε επεξεργασία σε 5 + 99 = 104 μονάδες χρόνου - η επιτάχυνση σε σύγκριση με μια σειριακή συσκευή είναι σχεδόν πέντε φορές (σύμφωνα με τον αριθμό των σταδίων του μεταφορέα).

    Φαίνεται ότι η επεξεργασία του αγωγού μπορεί να αντικατασταθεί επιτυχώς από τον συνηθισμένο παραλληλισμό, για τον οποίο αντιγράφουμε την κύρια συσκευή όσες φορές υποτίθεται ότι έχει εκχωρηθεί ο αριθμός των σταδίων του αγωγού. Στην πραγματικότητα, οι πέντε συσκευές στο προηγούμενο παράδειγμα θα επεξεργαστούν 100 ζεύγη ορισμάτων σε 100 μονάδες χρόνου, που είναι ταχύτερος από τον χρόνο λειτουργίας της συσκευής μεταφοράς! Τι συμβαίνει? Η απάντηση είναι απλή: πενταπλασιάζοντας τον αριθμό των συσκευών, αυξάνουμε σημαντικά τόσο τον όγκο του εξοπλισμού όσο και το κόστος του. Φανταστείτε ότι ένα εργοστάσιο αυτοκινήτων αποφάσισε να αφαιρέσει τη γραμμή συναρμολόγησης διατηρώντας τον ρυθμό παραγωγής αυτοκινήτων. Εάν προηγουμένως υπήρχαν χίλια αυτοκίνητα στη γραμμή συναρμολόγησης ταυτόχρονα, τότε, ενεργώντας κατ' αναλογία με το προηγούμενο παράδειγμα, είναι απαραίτητο να στρατολογηθούν χίλιες ομάδες, καθεμία από τις οποίες (1) είναι σε θέση να συναρμολογήσει πλήρως το αυτοκίνητο από την αρχή για να ολοκληρώσετε, εκτελώντας εκατοντάδες διαφορετικούς τύπους λειτουργιών και (2) να το κάνετε τον ίδιο χρόνο που το αυτοκίνητο ήταν προηγουμένως στη γραμμή συναρμολόγησης. Μπορείτε να φανταστείτε το κόστος ενός τέτοιου αυτοκινήτου; Οχι? Συμφωνώ, είναι δύσκολο, εκτός και αν σου έρθει στο μυαλό η Lamborghini, αλλά γι' αυτό προέκυψε η επεξεργασία της γραμμής συναρμολόγησης...

      Μηνύματα

    • Παράλληλη και επεξεργασία αγωγών

      Η παράλληλη επεξεργασία δεδομένων ενσωματώνει την ιδέα της εκτέλεσης πολλών ενεργειών ταυτόχρονα, όπως π.χ. μεταφορική ταινίαΚαι παραλληλισμός.

      Παράλληλη επεξεργασία

      Όταν μια συσκευή εκτελεί μία λειτουργία ανά μονάδα χρόνου, μπορούμε να πούμε ότι η συσκευή θα εκτελεί χίλιες λειτουργίες σε χίλιες μονάδες. Αν υποθέσουμε ότι υπάρχουν πέντε ανεξάρτητες συσκευές που λειτουργούν ταυτόχρονα, τότε ένα τέτοιο σύστημα συσκευών μπορεί να εκτελέσει τις ίδιες χιλιάδες λειτουργίες σε διακόσιες μονάδες χρόνου. Κατ' αναλογία, ένα σύστημα Ν συσκευών θα εκτελεί την ίδια εργασία σε 1000/Ν μονάδες χρόνου. Αυτό ισχύει και για την πραγματική ζωή, για παράδειγμα:

      ένας λαχανόκηπος μπορεί να σκάψει ένας στρατιώτης σε 10 ώρες και μια εταιρεία 50 στρατιωτών με τις ίδιες ικανότητες, που εργάζονται ταυτόχρονα, θα τον σκάψει σε 12 λεπτά - η αρχή του παραλληλισμού σε δράση.

      Η Samarsky A.A., που έκανε υπολογισμούς για την προσομοίωση πυρηνικών εκρήξεων στις αρχές της δεκαετίας του '50, ήταν πρωτοπόρος στην παράλληλη επεξεργασία ροών δεδομένων. Ο Samarsky υπολόγισε την εξέλιξη του κύματος έκρηξης με έναν ενδιαφέροντα τρόπο - κάθισε πολλές δεκάδες άτομα με προσθήκη μηχανών σε τραπέζια, αναγκάζοντάς τους να μεταφέρουν δεδομένα ο ένας στον άλλο απλά με λόγια και να βάλουν τους απαραίτητους αριθμούς στις μηχανές πρόσθεσης. Θα μπορούσατε να πείτε ότι αυτό είναι
      και υπήρχε το πρώτο παράλληλο σύστημα. Αν και οι υπολογισμοί για τη βόμβα υδρογόνου έγιναν αριστοτεχνικά, η ακρίβειά τους ήταν αρκετά χαμηλή, επειδή το πλέγμα που χρησιμοποιήθηκε είχε λίγους κόμβους και ο χρόνος υπολογισμού ήταν πολύ μεγάλος.

      Επεξεργασία μεταφορέα

      Για να προσθέσετε δύο πραγματικούς αριθμούς που αντιπροσωπεύονται σε μορφή κινητής υποδιαστολής, είναι απαραίτητο να εκτελέσετε πολλές μικρές πράξεις - συγκρίνετε εντολές, ευθυγραμμίστε εντολές, προσθέστε mantissas, κανονικοποίηση κ.λπ. Οι επεξεργαστές των πρώτων υπολογιστών πραγματοποίησαν όλες αυτές τις «μικρο-λειτουργίες» για κάθε ζεύγος ορισμάτων διαδοχικά, το ένα μετά το άλλο, μέχρι να φτάσουν στο τελικό αποτέλεσμα και μόνο τότε το επόμενο ζεύγος υποβλήθηκε σε επεξεργασία.
      όροι.

      Η ουσία της επεξεργασίας αγωγών είναι να απομονώσει μεμονωμένα στάδια μιας κοινής λειτουργίας. Κάθε στάδιο, έχοντας ολοκληρώσει την εργασία του, θα μετέδιδε το αποτέλεσμα στο επόμενο, ενώ ταυτόχρονα λάμβανε ένα νέο τμήμα δεδομένων. Ο συνδυασμός προηγουμένως χωριστών λειτουργιών έχει σίγουρα θετική επίδραση στην ταχύτητα επεξεργασίας. Για παράδειγμα, μια λειτουργία μπορεί να έχει πέντε μικροεπεμβάσεις, καθεμία από τις οποίες εκτελείται σε μία μονάδα χρόνου.
      Εάν υπάρχει μία αδιαίρετη σειριακή συσκευή, τότε επεξεργάζεται 100 ζεύγη ορισμάτων σε 500 μονάδες. Εάν κάθε μικρολειτουργία χωρίζεται σε ξεχωριστό στάδιο (ή στάδιο) μιας συσκευής μεταφοράς, τότε στην πέμπτη μονάδα χρόνου, τα πρώτα πέντε ζεύγη ορισμάτων θα βρίσκονται σε διαφορετικά στάδια επεξεργασίας μιας τέτοιας συσκευής και ολόκληρο το σύνολο των εκατό ζευγών θα υποβληθούν σε επεξεργασία σε 104 (5+99) χρονικές μονάδες - η επιτάχυνση σε σύγκριση με μια σειριακή συσκευή είναι σχεδόν πέντε φορές (με βάση τον αριθμό των σταδίων του αγωγού).

      Φαίνεται ότι η επεξεργασία του αγωγού μπορεί να αντικατασταθεί επιτυχώς από τον συμβατικό παραλληλισμό· αρκεί απλώς να αντιγράψετε την κύρια συσκευή όσες φορές υποτίθεται ότι έχει εκχωρηθεί ο αριθμός των σταδίων του αγωγού. Στην πραγματικότητα, 5 συσκευές επεξεργάζονται 100 ζεύγη ορισμάτων σε 100 μονάδες χρόνου, που είναι ταχύτερος από τον χρόνο λειτουργίας μιας συσκευής μεταφοράς. Εάν αυξήσετε τον αριθμό των συσκευών πέντε φορές, ο όγκος του εξοπλισμού και το κόστος του θα αυξηθούν σημαντικά. Για παράδειγμα, λάβετε υπόψη μια κατάσταση όπου αφαιρείται ένας μεταφορικός ιμάντας σε εργοστάσιο αυτοκινήτων, ενώ πρέπει να διατηρηθεί ο ρυθμός παραγωγής αυτοκινήτων· κατά συνέπεια, θα απαιτηθούν χίλιες ομάδες, καθεμία από τις οποίες μπορεί να συναρμολογήσει ένα αυτοκίνητο από την αρχή μέχρι το τέλος. εκτελώντας εκατοντάδες διαφορετικές λειτουργίες και σε αρκετά σύντομο χρονικό διάστημα.

      Το κόστος του αυτοκινήτου θα είναι κολοσσιαίο. Γι' αυτό προέκυψε η επεξεργασία αγωγών.

      Σύγχρονα παράλληλα συστήματα

      Επί του παρόντος, υπάρχουν τέσσερις κατευθύνσεις για την ανάπτυξη της τεχνολογίας υπολογιστών υψηλής απόδοσης.

      Διανυσματικοί μεταφορικοί υπολογιστές

      Τα χαρακτηριστικά τέτοιων μηχανών είναι ένα σύνολο διανυσματικών εντολών και λειτουργικών συσκευών μεταφοράς. Σε αντίθεση με την παραδοσιακή προσέγγιση, οι διανυσματικές εντολές είναι σε θέση να λειτουργούν με ολόκληρες συστοιχίες ανεξάρτητων δεδομένων, πράγμα που σημαίνει ότι καθίσταται δυνατή η αποτελεσματική φόρτωση των διαθέσιμων αγωγών, δηλ. Μια εντολή όπως A=B+C μπορεί να σημαίνει ότι δεν προσθέτουμε δύο αριθμούς, αλλά δύο πίνακες. Ένας τυπικός εκπρόσωπος αυτής της κατεύθυνσης είναι η οικογένεια υπολογιστών vector-pipeline CRAY.

      Μαζικά παράλληλοι υπολογιστές με κατανεμημένη μνήμη.

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

      Ωστόσο, υπάρχει ένα σημαντικό μειονέκτημα που ξεπερνά πολλά από τα πλεονεκτήματα. Σε αυτούς τους υπολογιστές, η επικοινωνία μεταξύ των επεξεργαστών είναι πολύ πιο αργή από την τοπική επεξεργασία δεδομένων από τους ίδιους τους επεξεργαστές. Από αυτή την άποψη, είναι πολύ δύσκολο να γραφτεί ένα αποτελεσματικό πρόγραμμα για τέτοιους υπολογιστές· για ορισμένους αλγόριθμους μερικές φορές είναι απλώς αδύνατο. Παραδείγματα τέτοιων υπολογιστών: Intel Paragon, IBM SP1, Parsytec, σε κάποιο βαθμό IBM SP2 και CRAY T3D/T3E, αν και η επίδραση αυτού του μειονεκτήματος σε αυτούς τους υπολογιστές είναι πολύ μικρότερη. Τα δίκτυα υπολογιστών, τα οποία θεωρούνται όλο και περισσότερο ως μια αρκετά φθηνή εναλλακτική λύση έναντι των εξαιρετικά ακριβών υπολογιστών, μπορούν επίσης να ταξινομηθούν στην ίδια κατηγορία.

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

      Όλη η μνήμη RAM αυτών των υπολογιστών είναι κοινή από πολλούς ίδιους επεξεργαστές. Τα προβλήματα της προηγούμενης κατηγορίας έχουν λυθεί, αλλά έχουν προστεθεί νέα - για τεχνικούς λόγους είναι αδύνατο να αυξηθεί ο αριθμός των επεξεργαστών που θα έχουν πρόσβαση στην κοινόχρηστη μνήμη. Παραδείγματα αυτής της κατεύθυνσης είναι πολλοί υπολογιστές SMP πολλαπλών επεξεργαστών ή, για παράδειγμα, μεμονωμένοι κόμβοι υπολογιστών HP Exemplar και Sun StarFire.

      Συνδυασμένα συστήματα

      Η τελευταία κατεύθυνση μάλλον δεν είναι ανεξάρτητη, αλλά απλώς ένας συνδυασμός των προηγούμενων τριών. Ας σχηματίσουμε έναν υπολογιστικό κόμβο από πολλούς επεξεργαστές (παραδοσιακούς ή διανυσματικούς αγωγούς) και μια κοινή μνήμη για αυτούς. Εάν υπάρχει έλλειψη υπολογιστικής ισχύος, μπορείτε να συνδυάσετε αρκετούς κόμβους με κανάλια υψηλής ταχύτητας. Αυτός ο τύπος αρχιτεκτονικής ονομάζεται αρχιτεκτονική συμπλέγματος. Τα Sun StarFire, NEC SX-5, CRAY SV1, HP Exemplar, τα τελευταία μοντέλα IBM SP2 και άλλα είναι κατασκευασμένα σε αυτήν την αρχή.

      Αυτή η κατεύθυνση είναι αυτή τη στιγμή η πιο ελπιδοφόρα για το σχεδιασμό υπολογιστών με δείκτες απόδοσης ρεκόρ.

      Επίπεδα παραλληλισμού

      Ανάλογα με το επίπεδο στο οποίο θα πρέπει να εξασφαλιστεί ο παραλληλισμός, χρησιμοποιούνται ορισμένες μέθοδοι και μέσα υλοποίησης. Διακρίνονται τα ακόλουθα επίπεδα παραλληλισμού.

      Μικροεπίπεδο. Η εκτέλεση μιας εντολής χωρίζεται σε φάσεις και οι φάσεις πολλών γειτονικών εντολών μπορούν να επικαλύπτονται μέσω της διοχέτευσης. Αυτό το επίπεδο μπορεί να επιτευχθεί σε ένα αεροσκάφος με έναν επεξεργαστή.

      Επίπεδο νήματος. Οι εργασίες χωρίζονται σε μέρη που μπορούν να εκτελεστούν παράλληλα (threads). Αυτό το επίπεδο επιτυγχάνεται σε παράλληλα αεροσκάφη.

      Επίπεδο εντολών. Πολλές εντολές εκτελούνται παράλληλα· ο επεξεργαστής φιλοξενεί πολλές σωληνώσεις ταυτόχρονα. Τυπικό για υπερβαθμωτούς επεξεργαστές.

      Επίπεδο εργασίας. Ανεξάρτητες εργασίες εκτελούνται ταυτόχρονα σε διαφορετικούς επεξεργαστές· πρακτικά δεν υπάρχει αλληλεπίδραση μεταξύ τους. Το επίπεδο είναι χαρακτηριστικό για υπολογιστές πολλαπλών επεξεργαστών και πολυμηχανημάτων.

      Η έννοια του επιπέδου παραλληλισμού συνδέεται στενά με την έννοια της κοκκοποίησης. Η ευαισθησία είναι ένα μέτρο της αναλογίας του ποσού του υπολογισμού που εκτελείται σε μια παράλληλη εργασία προς την ποσότητα της επικοινωνίας (για την ανταλλαγή μηνυμάτων). Ο βαθμός κοκκοποίησης ποικίλλει από λεπτόκοκκο έως χονδρόκοκκο. Ο νόμος του Amdahl επικεντρώνεται στο χοντρόκοκκο
      παραλληλισμός.

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

      Για αποτελεσματική παράλληλη εκτέλεση, είναι απαραίτητο να εξισορροπηθεί ο βαθμός ευκρίνειας του προγράμματος και το ποσό της καθυστέρησης επικοινωνίας που εμφανίζεται μεταξύ διαφορετικών κόκκων. Για ελάχιστο λανθάνοντα χρόνο επικοινωνίας, η λεπτομερής κατάτμηση προγραμμάτων είναι η καλύτερη. Σε αυτή την περίπτωση, λειτουργεί ο παραλληλισμός δεδομένων. Εάν η καθυστέρηση επικοινωνίας είναι μεγάλη, τότε είναι προτιμότερο να χρησιμοποιήσετε κατάτμηση προγράμματος με χονδρόκοκκο.

      Βιβλιογραφία

      1. Badenko V.L. Υπολογιστής υψηλής απόδοσης. Φροντιστήριο. - Αγία Πετρούπολη: Εκδοτικός Οίκος Πολυτεχνείου. Πανεπιστήμιο, 2010. - 180 σελ.
      2. Barsky A.B. Παράλληλες τεχνολογίες πληροφοριών: Σχολικό βιβλίο/Α.Β. Barsky.-M.: Internet University of Information Technologies; ΔΙΩΝΥΜΙΚΟΣ. Εργαστήριο Γνώσης, 2007.-503 σελ.: εικ., πίν.-(σειρά «Βασικές αρχές Τεχνολογιών Πληροφορικής») - σελ.20-28, σ.56-58.
      3. Korneev V.V. Computer systems.-M.: Helios APB, 2004.-512 p., ill.- p. 34-46
      4. Λάτσης Α.Ο. Παράλληλη επεξεργασία δεδομένων. Μ.: Ακαδημία, 2010. - 336 σελ.
      5. Tsilker B.Ya., Orlov S.A. Οργάνωση υπολογιστών και συστημάτων. Εγχειρίδιο για τα πανεπιστήμια. - Αγία Πετρούπολη: Peter, 2004. - 668 p.
    • Μηνύματα

    Τρόποι βελτίωσης της απόδοσης του αεροσκάφους είναι ενσωματωμένοι στην αρχιτεκτονική του. Από τη μία πλευρά, αυτό είναι ένα σύνολο επεξεργαστών, μονάδων μνήμης, συσκευών εισόδου/εξόδου και, φυσικά, μεθόδων σύνδεσής τους, π.χ. περιβάλλον επικοινωνίας. Από την άλλη πλευρά, αυτές είναι οι πραγματικές ενέργειες του αεροσκάφους για την επίλυση ενός συγκεκριμένου προβλήματος, και αυτές είναι λειτουργίες σε εντολές και δεδομένα. Αυτή είναι στην πραγματικότητα ολόκληρη η κύρια βάση για παράλληλη επεξεργασία. Η παράλληλη επεξεργασία, που ενσωματώνει την ιδέα της ταυτόχρονης εκτέλεσης πολλών ενεργειών, έχει διάφορες ποικιλίες: υπερκλιμάκωση, διοχέτευση,SIMD- επεκτάσεις,Υπερπληθωρισμός Σπείρωμα, πολλαπλών πυρήνων.Βασικά, αυτοί οι τύποι παράλληλης επεξεργασίας είναι διαισθητικοί, επομένως θα κάνουμε μόνο μικρές επεξηγήσεις. Εάν μια συγκεκριμένη συσκευή εκτελεί μία λειτουργία ανά μονάδα χρόνου, τότε θα εκτελέσει χίλιες λειτουργίες σε χίλιες μονάδες. Αν υποθέσουμε ότι υπάρχουν πέντε πανομοιότυπες ανεξάρτητες συσκευές ικανές να λειτουργούν ταυτόχρονα, τότε ένα σύστημα πέντε συσκευών μπορεί να εκτελέσει τις ίδιες χιλιάδες λειτουργίες όχι σε χίλιες, αλλά σε διακόσιες μονάδες χρόνου. Ομοίως, ένα σύστημα Ν συσκευών θα εκτελεί την ίδια εργασία σε 1000/N μονάδες χρόνου. Παρόμοιες αναλογίες μπορούν να βρεθούν στη ζωή: αν ένας στρατιώτης σκάψει έναν κήπο σε 10 ώρες, τότε μια ομάδα πενήντα στρατιωτών με τις ίδιες ικανότητες, που εργάζονται ταυτόχρονα, θα αντιμετωπίσει την ίδια εργασία σε 12 λεπτά (παράλληλη επεξεργασία δεδομένων) και ακόμη με τραγούδια (παράλληλη επεξεργασία εντολών).

    Επεξεργασία μεταφορέα . Τι χρειάζεται για να προσθέσουμε δύο πραγματικούς αριθμούς που αντιπροσωπεύονται σε μορφή κινητής υποδιαστολής; Πολλές μικρές λειτουργίες, όπως σύγκριση παραγγελιών, ευθυγράμμιση παραγγελιών, προσθήκη μάντισσας, κανονικοποίηση κ.λπ. Οι επεξεργαστές των πρώτων υπολογιστών εκτέλεσαν όλες αυτές τις «μικρο-λειτουργίες» για κάθε ζεύγος ορισμάτων, το ένα μετά το άλλο, μέχρι να φτάσουν στο τελικό αποτέλεσμα και μόνο τότε προχώρησαν στην επεξεργασία του επόμενου ζεύγους όρων. Η ιδέα της επεξεργασίας του αγωγού είναι να απομονωθούν μεμονωμένα στάδια εκτέλεσης μιας γενικής λειτουργίας και κάθε στάδιο, έχοντας ολοκληρώσει την εργασία του, θα περνούσε το αποτέλεσμα στο επόμενο, ενώ ταυτόχρονα θα λάμβανε ένα νέο τμήμα δεδομένων εισόδου. Λαμβάνουμε ένα προφανές κέρδος στην ταχύτητα επεξεργασίας συνδυάζοντας προηγουμένως διαχωρισμένες λειτουργίες.

    Υπερκλιμακωτότητα.Όπως και στο προηγούμενο παράδειγμα, μόνο κατά την κατασκευή ενός αγωγού, χρησιμοποιούνται πολλές υλοποιήσεις υλικού και λογισμικού λειτουργικών συσκευών, για παράδειγμα, δύο ή τρεις ALU, τρεις ή τέσσερις συσκευές δειγματοληψίας.

    Υπερπληθωρισμός Σπείρωμα. Μια πολλά υποσχόμενη κατεύθυνση στην ανάπτυξη σύγχρονων μικροεπεξεργαστών που βασίζονται στην πολυνηματική αρχιτεκτονική. Το κύριο εμπόδιο στην αύξηση της παραγωγικότητας μέσω της αύξησης του αριθμού των λειτουργικών συσκευών είναι η οργάνωση της αποτελεσματικής φόρτωσης αυτών των συσκευών. Εάν οι σημερινοί κώδικες λογισμικού δεν μπορούν να φορτώσουν όλες τις λειτουργικές συσκευές με εργασία, τότε μπορείτε να επιτρέψετε στον επεξεργαστή να εκτελέσει περισσότερες από μία εργασίες (νήμα), έτσι ώστε πρόσθετα νήματα να φορτώνουν όλες τις λειτουργικές μονάδες (όπως το multitasking).

    Πολυπύρηνος. Είναι δυνατόν, φυσικά, να εφαρμοστεί η πολυεπεξεργασία σε επίπεδο chip, δηλ. τοποθετήστε πολλούς επεξεργαστές σε ένα τσιπ (Power 4). Αλλά αν πάρουμε έναν μικροεπεξεργαστή μαζί με τη μνήμη ως πυρήνες συστήματος, τότε αρκετοί τέτοιοι πυρήνες σε ένα τσιπ θα δημιουργήσουν μια δομή πολλαπλών πυρήνων. Σε αυτή την περίπτωση, λειτουργίες (για παράδειγμα, διεπαφές συστημάτων δικτύου και τηλεπικοινωνιών) ενσωματώνονται στο τσιπ, για το οποίο συνήθως χρησιμοποιούνται chipsets (Motorola MPC8260, επεξεργαστές Power 4).

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

    1. Διανυσματικοί μεταφορικοί υπολογιστές. Οι λειτουργικές συσκευές αγωγών και το διανυσματικό σύνολο οδηγιών είναι δύο χαρακτηριστικά τέτοιων μηχανών. Σε αντίθεση με την παραδοσιακή προσέγγιση, οι διανυσματικές εντολές λειτουργούν σε ολόκληρες συστοιχίες ανεξάρτητων δεδομένων, γεγονός που επιτρέπει την αποτελεσματική φόρτωση των διαθέσιμων αγωγών, π.χ. Μια εντολή όπως A=B+C μπορεί να σημαίνει την προσθήκη δύο πινάκων, όχι δύο αριθμών. Ένας τυπικός εκπρόσωπος αυτής της κατεύθυνσης είναι η οικογένεια υπολογιστών διανυσματικών αγωγών CRAY, η οποία περιλαμβάνει, για παράδειγμα, τους CRAY EL, CRAY J90, CRAY T90 (τον Μάρτιο του 2000, η ​​αμερικανική εταιρεία TERA αγόρασε το τμήμα CRAY από τη Silicon Graphics, Inc.) .

    2. Μαζικά παράλληλοι υπολογιστέςμε κατανεμημένη μνήμη. Η ιδέα της κατασκευής υπολογιστών αυτής της κατηγορίας είναι ασήμαντη: ας πάρουμε σειριακούς μικροεπεξεργαστές, ας παρέχουμε στον καθένα τη δική του τοπική μνήμη, ας συνδεθούμε μέσω κάποιου μέσου επικοινωνίας - αυτό είναι όλο. Αυτή η αρχιτεκτονική έχει πολλά πλεονεκτήματα: εάν απαιτείται υψηλή απόδοση, τότε μπορούν να προστεθούν περισσότεροι επεξεργαστές· εάν τα οικονομικά είναι περιορισμένα ή η απαιτούμενη υπολογιστική ισχύς είναι γνωστή εκ των προτέρων, τότε είναι εύκολο να επιλέξετε τη βέλτιστη διαμόρφωση κ.λπ.

    Ωστόσο, υπάρχει επίσης ένα καθοριστικό «μείον» που μειώνει πολλά από τα «συν» σε τίποτα. Γεγονός είναι ότι είναι ανεξάρτητο, αλλά μάλλον συνδυασμός των τριών προηγούμενων. Θα σχηματίσουμε έναν υπολογιστικό κόμβο από αρκετούς επεξεργαστές (παραδοσιακούς ή διανυσματικούς αγωγούς) και την κοινή τους μνήμη. Εάν η λαμβανόμενη υπολογιστική ισχύς δεν είναι αρκετή, τότε θα συνδυάσουμε αρκετούς κόμβους με κανάλια υψηλής ταχύτητας. Αυτό το είδος αρχιτεκτονικής ονομάζεται σύμπλεγμα SV1, HP Υπόδειγμα,Ήλιος StarFire, N.E.C. SX-5, τελευταία μοντέλα IBM SP2

    3. Παράλληλουπολογιστές κοινής μνήμης. Όλη η μνήμη RAM τέτοιων υπολογιστών μοιράζεται από πολλούς ίδιους επεξεργαστές. Αυτό αφαιρεί τα προβλήματα της προηγούμενης κατηγορίας, αλλά προσθέτει νέα - ο αριθμός των επεξεργαστών με πρόσβαση στην κοινόχρηστη μνήμη δεν μπορεί να γίνει μεγάλος για καθαρά τεχνικούς λόγους. Αυτή η περιοχή περιλαμβάνει πολλούς σύγχρονους υπολογιστές SMP πολλαπλών επεξεργαστών ή, για παράδειγμα, μεμονωμένους κόμβους υπολογιστών HP Υπόδειγμακαι Κυρ StarFire.

    4. Συστήματα συμπλέγματος.Η τελευταία σκηνοθεσία, αυστηρά, δεν είναι ανεξάρτητη, αλλά μάλλον συνδυασμός των τριών προηγούμενων. Θα σχηματίσουμε έναν υπολογιστικό κόμβο από αρκετούς επεξεργαστές (παραδοσιακούς ή διανυσματικούς αγωγούς) και την κοινή τους μνήμη. Εάν η λαμβανόμενη υπολογιστική ισχύς δεν είναι αρκετή, τότε θα συνδυάσουμε αρκετούς κόμβους με κανάλια υψηλής ταχύτητας. Αυτό το είδος αρχιτεκτονικής ονομάζεται σύμπλεγμα, και τα CRAY είναι χτισμένα σε αυτήν την αρχή SV1, HP Υπόδειγμα,Ήλιος StarFire, N.E.C. SX-5, τελευταία μοντέλα IBM SP2και άλλοι. Αυτή η κατεύθυνση είναι αυτή που είναι η πιο ελπιδοφόρα για το σχεδιασμό υπολογιστών με δείκτες απόδοσης ρεκόρ.