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

English version (Αγγλική έκδοση)

Γενικά θέματα των Παράλληλων Μηχανών

    Για να λειτουργήσουν σωστά οι αλγόριθμοι που εκτελούνται στις παράλληλες μηχανές θα πρέπει η αποστολή δεδομένων (SEND) και η λήψη τους (RECEIVE) να γίνονται στο σωστό χρόνο ώστε να ανταλλάσσονται τα δεδομένα μεταξύ των μονάδων επεξεργασίας. Ένας γενικός κανόνας για να διασφαλιστεί αυτός ο συγχρονισμός είναι να χωρίζεται κάθε πρόγραμμα σε μια διαδοχή από ανταλλαγή δεδομένων και εσωτερικούς υπολογισμούς. Η ανταλλαγή δεδομένων εκτελείται στον ίδιο χρόνο για όλες τις μονάδες επεξεργασίας. Θα πρέπει να εξασφαλιστεί από τον κώδικα ότι και οι εσωτερικοί υπολογισμοί διαρκούν κάποιον προκαθορισμένο χρόνο που είναι ίδιος για όλες τις μονάδες επεξεργασίας. Έτσι διατηρείται ο συγχρονισμός μεταξύ των μονάδων επεξεργασίας για όλη τη διάρκεια εκτέλεσης του κώδικα. Στην περίπτωση που εκτελείται κάποιος βρόγχος, αυτός θα έχει μια από τις παρακάτω μορφές:

for i=1 to N

   SEND

   RECEIVE

   calculate

next i

 

for i=1 to N

   calculate

   SEND

   RECEIVE

next i

 

for i=1 to N

   calculate

   SEND

   RECEIVE

   calculate

next i

    Στην περίπτωση του "ArrayOfMCU" οι εντολές SEND/RECEIVE είναι απλές και εκτελούνται η μία μετά την άλλη.

    Στην περίπτωση του "parallelPIC" όμως χρειάζεται αρκετός χρόνος για τη σειριακή μετάδοση των δεδομένων. Στην απλούστερη περίπτωση αυτό σημαίνει ότι αμέσως μετά την εκτέλεση του SEND θα πρέπει να υπάρχει μια καθυστέρηση (που μπορεί να προϋπολογιστεί με ακρίβεια) και μετά να εκτελεστεί η εντολή RECEIVE. Βέβαια αυτό σημαίνει ότι υπάρχει αρκετός χρόνος όπου οι μονάδες επεξεργασίας είναι ουσιαστικά ανενεργές. Αυτός ο "νεκρός" χρόνος μπορεί να εξαλειφθεί σε ορισμένες περιπτώσεις αν κατά τη διάρκεια της σειριακής μετάδοσης οι μονάδες επεξεργασίας κάνουν υπολογισμούς που δεν εξαρτώνται από τα δεδομένα που αναμένονται να ληφθούν στο επόμενο βήμα ή/και δεν επηρεάζουν τα δεδομένα που πρόκειται να εκπεμφθούν στο επόμενο βήμα. Έτσι η περίπτωση ενός βρόγχου γίνεται:

for i=1 to N

   calculate

   SEND

   (calculate)

   RECEIVE

   calculate

next i

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