Προς το περιεχόμενο

threads ?


ianos666

Προτεινόμενες αναρτήσεις

Δημοσ.

Όταν έχεις μονοπύρηνο επεξεργαστή με hyperthreading και τρέχει εφαρμογή που εκμεταλλεύεται μόνο έναν πυρήνα, είτε on έχεις το HT (50% usage στον task manager) είτε off (100%), αυτή θα εκτελεστεί με την ίδια ταχύτητα. Θα χρησιμοποιήσει το 100% του φυσικού πυρήνα.

Αυτά στην θεωρία γιατί στην πράξη θα ναι λίγο ταχύτερη με το HT on μιας και παράλληλα με την εφαρμογή αυτή, τρέχουν και δεκάδες άλλες που απαιτούν έστω κι ένα ελάχιστο cpu time/usage.

Δημοσ.

 

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

Επίσης στη περίπτωση που σας είπα (ένας πυρήνας με ΗΤ) όταν τρέχεις ένα πρόγραμμα σε ένα tread, το ότι το task manager δείχνει 50% σημαίνει ότι χρησιμοποιείται όντως η μισή ισχύς του επεξεργαστή και ότι αν απενεργοποιούσες το HT θα πήγαινε πιο γρήγορα;

 

Παραδειγμα: Εστω οτι εχεις ενα επεξεργαστη με 1 πυρηνα και hyperthreading.Το hyperthreading του πυρηνα εξασφαλιζει οτι υπο ΚΑΠΟΙΕΣ περιορισμενες περιπτωσεις θα εκτελουνται 2 διαφορετικες εντολες απο 2 διαφορετικα νηματα( ΞΕΝΑ ΤΕΛΕΙΩΣ ΜΕΤΑΞΥ ΤΟΥΣ) στον επεξεργαστη, που σημανει οτι τα 2 νηματα δεν μοιραζονται μνημη και "κατα καποιο τροπο" δεν χρειαζεται το ενα τα αποτελεσματα του αλλου.ΜΟΝΟ αυτο κανει το ΗΤ....

 

Οι εντολες που βρισκονται σε ενα νημα ΠΑΝΤΑ περιμενουν η μια την αλλη.Καμια δεν εκτελειται παραλληλα με καποια αλλη....Για να κανεις καποιες εντολες να εκτελουνται ταυτοχρονα,φτιαχνεις τα νηματα που το καθε ενα εκτελει σειριακα τις δικες του εντολες....

 

Αυτο που βλεπεις στο task manager , δηλαδη οτι εχεις το 50% δεν σημαινει οτι χρησιμοποιεις τη "μιση επιταχυνση" του επεξεργαστη.Σημανει, περιπου, οτι μπορεις να τρεξεις αλλο τοσο φορτο εντολων.

 

 

ΕΔΙΤ: Αν εχεις ενα επεξεργαστη μπορεις να τρεχεις καθε χρονικη μοναδα μια εντολη,δηλαδη μια εντολη απο καθε προγραμμα/νημα.Το γεγονος οτι βλεπεις να εκτελουνται πολλα προγραμματα μαζι,δεν εχει να κανει οτι οι εντολες του εκτελουνται παραλληλα/ταυτοχρονα , αλλα οτι λιγες εντολες απο ενα προγραμμα και λιγες απο το αλλο με "εναλλαγες".Αλλα επειδη οι αλλαγες αυτες ειναι πολυ γρηγορες και δεν μπορουμε να τις καταλαβουμε , δινεται η "ψευδεσθηση" του ταυτοχρονου...

Δημοσ.

Οι εντολες που βρισκονται σε ενα νημα ΠΑΝΤΑ περιμενουν η μια την αλλη.Καμια δεν εκτελειται παραλληλα με καποια αλλη....Για να κανεις καποιες εντολες να εκτελουνται ταυτοχρονα,φτιαχνεις τα νηματα που το καθε ενα εκτελει σειριακα τις δικες του εντολες....

 

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

α<=β+γ

δ<=α+β

ε<=μ+ν (ανεξάρτητη εντολή από τις προηγούμενες, μπορεί να εκτελεστεί και "εκτός σειράς")

 

Για περισσότερο ψάξιμο:

Instruction level parallelism

Superscalar

Δημοσ.

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

α<=β+γ

δ<=α+β

ε<=μ+ν (ανεξάρτητη εντολή από τις προηγούμενες, μπορεί να εκτελεστεί και "εκτός σειράς")

 

Για περισσότερο ψάξιμο:

Instruction level parallelism

Superscalar

 

 

Σαφως ετσι ειναι τα πραγματα, αλλα ετσι γινεται πιο δυσνοητο το παραδειγμα μου....

Και φυσικα δεν σταματαει εκει αυτο που λες,γιατι εχει αμεση σχεση με τη μεταγλωτιση του κωδικα μιας εφαρμογης ( αφου εκει ειναι το ζουμι της υποθεσης ), οπως επισης και με την assembly του καθε επεξεργαστη.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...