antonl Δημοσ. 18 Ιανουαρίου 2011 Δημοσ. 18 Ιανουαρίου 2011 Όταν έχεις μονοπύρηνο επεξεργαστή με hyperthreading και τρέχει εφαρμογή που εκμεταλλεύεται μόνο έναν πυρήνα, είτε on έχεις το HT (50% usage στον task manager) είτε off (100%), αυτή θα εκτελεστεί με την ίδια ταχύτητα. Θα χρησιμοποιήσει το 100% του φυσικού πυρήνα. Αυτά στην θεωρία γιατί στην πράξη θα ναι λίγο ταχύτερη με το HT on μιας και παράλληλα με την εφαρμογή αυτή, τρέχουν και δεκάδες άλλες που απαιτούν έστω κι ένα ελάχιστο cpu time/usage.
ChRis6 Δημοσ. 18 Ιανουαρίου 2011 Δημοσ. 18 Ιανουαρίου 2011 Αυτό το ταυτόχρονα είναι που δεν καταλαβαίνω. Αφού έναν πυρήνα έχεις, οι εντολές μοιραία θα περιμένουν η μία την άλλη για να εκτελεστούν. Οπότε από που πηγάζει η επιτάχυνση; Επίσης στη περίπτωση που σας είπα (ένας πυρήνας με ΗΤ) όταν τρέχεις ένα πρόγραμμα σε ένα tread, το ότι το task manager δείχνει 50% σημαίνει ότι χρησιμοποιείται όντως η μισή ισχύς του επεξεργαστή και ότι αν απενεργοποιούσες το HT θα πήγαινε πιο γρήγορα; Παραδειγμα: Εστω οτι εχεις ενα επεξεργαστη με 1 πυρηνα και hyperthreading.Το hyperthreading του πυρηνα εξασφαλιζει οτι υπο ΚΑΠΟΙΕΣ περιορισμενες περιπτωσεις θα εκτελουνται 2 διαφορετικες εντολες απο 2 διαφορετικα νηματα( ΞΕΝΑ ΤΕΛΕΙΩΣ ΜΕΤΑΞΥ ΤΟΥΣ) στον επεξεργαστη, που σημανει οτι τα 2 νηματα δεν μοιραζονται μνημη και "κατα καποιο τροπο" δεν χρειαζεται το ενα τα αποτελεσματα του αλλου.ΜΟΝΟ αυτο κανει το ΗΤ.... Οι εντολες που βρισκονται σε ενα νημα ΠΑΝΤΑ περιμενουν η μια την αλλη.Καμια δεν εκτελειται παραλληλα με καποια αλλη....Για να κανεις καποιες εντολες να εκτελουνται ταυτοχρονα,φτιαχνεις τα νηματα που το καθε ενα εκτελει σειριακα τις δικες του εντολες.... Αυτο που βλεπεις στο task manager , δηλαδη οτι εχεις το 50% δεν σημαινει οτι χρησιμοποιεις τη "μιση επιταχυνση" του επεξεργαστη.Σημανει, περιπου, οτι μπορεις να τρεξεις αλλο τοσο φορτο εντολων. ΕΔΙΤ: Αν εχεις ενα επεξεργαστη μπορεις να τρεχεις καθε χρονικη μοναδα μια εντολη,δηλαδη μια εντολη απο καθε προγραμμα/νημα.Το γεγονος οτι βλεπεις να εκτελουνται πολλα προγραμματα μαζι,δεν εχει να κανει οτι οι εντολες του εκτελουνται παραλληλα/ταυτοχρονα , αλλα οτι λιγες εντολες απο ενα προγραμμα και λιγες απο το αλλο με "εναλλαγες".Αλλα επειδη οι αλλαγες αυτες ειναι πολυ γρηγορες και δεν μπορουμε να τις καταλαβουμε , δινεται η "ψευδεσθηση" του ταυτοχρονου...
eliascm21 Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 Σας ευχαριστώ πολύ, τώρα νομίζω το ξεκαθάρισα, με μπέρδευε αυτό που έδειχνε το task manager
capitan Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 Οι εντολες που βρισκονται σε ενα νημα ΠΑΝΤΑ περιμενουν η μια την αλλη.Καμια δεν εκτελειται παραλληλα με καποια αλλη....Για να κανεις καποιες εντολες να εκτελουνται ταυτοχρονα,φτιαχνεις τα νηματα που το καθε ενα εκτελει σειριακα τις δικες του εντολες.... αυτό δεν ισχύει πάντα... στους σημερινούς superscalar επεξεργαστές ο κάθε πυρήνας, αυτός που θα περίμενες δηλαδή να τρέχει σειριακά μια εντολή πίσω από την άλλη, πολλές φορές μπορεί να τρέχει ταυτόχρονα πολλές εντολές. Πραγματικά ταυτόχρονα. Αυτό μπορεί να το κάνει γιατί έχει 2 ή περισσότερες κόπιες από κάποια υποσυστήματα του. Μπορεί να έχει δηλαδή 2 αριθμητικές μονάδες και άρα να τρέχει 2 αριθμητικές πράξεις ταυτόχρονα. Αυτό το έκαναν γιατί αν το σκεφτείς, και τα σειριακά προγράμματα έχουν κάποιο εγγενή παραλληλισμό που μπορείς να εκμεταλλευτείς. Πχ α<=β+γ δ<=α+β ε<=μ+ν (ανεξάρτητη εντολή από τις προηγούμενες, μπορεί να εκτελεστεί και "εκτός σειράς") Για περισσότερο ψάξιμο: Instruction level parallelism Superscalar
ChRis6 Δημοσ. 19 Ιανουαρίου 2011 Δημοσ. 19 Ιανουαρίου 2011 αυτό δεν ισχύει πάντα... στους σημερινούς superscalar επεξεργαστές ο κάθε πυρήνας, αυτός που θα περίμενες δηλαδή να τρέχει σειριακά μια εντολή πίσω από την άλλη, πολλές φορές μπορεί να τρέχει ταυτόχρονα πολλές εντολές. Πραγματικά ταυτόχρονα. Αυτό μπορεί να το κάνει γιατί έχει 2 ή περισσότερες κόπιες από κάποια υποσυστήματα του. Μπορεί να έχει δηλαδή 2 αριθμητικές μονάδες και άρα να τρέχει 2 αριθμητικές πράξεις ταυτόχρονα. Αυτό το έκαναν γιατί αν το σκεφτείς, και τα σειριακά προγράμματα έχουν κάποιο εγγενή παραλληλισμό που μπορείς να εκμεταλλευτείς. Πχ α<=β+γ δ<=α+β ε<=μ+ν (ανεξάρτητη εντολή από τις προηγούμενες, μπορεί να εκτελεστεί και "εκτός σειράς") Για περισσότερο ψάξιμο: Instruction level parallelism Superscalar Σαφως ετσι ειναι τα πραγματα, αλλα ετσι γινεται πιο δυσνοητο το παραδειγμα μου.... Και φυσικα δεν σταματαει εκει αυτο που λες,γιατι εχει αμεση σχεση με τη μεταγλωτιση του κωδικα μιας εφαρμογης ( αφου εκει ειναι το ζουμι της υποθεσης ), οπως επισης και με την assembly του καθε επεξεργαστη.
ianos666 Δημοσ. 21 Ιανουαρίου 2011 Μέλος Δημοσ. 21 Ιανουαρίου 2011 ευχαριστω παιδια για τις απαντησεις... καλυφθηκα παραπανω απο οτι περιμενα-ηθελα
rafail1994 Δημοσ. 21 Ιανουαρίου 2011 Δημοσ. 21 Ιανουαρίου 2011 Έτσι είμαστε εδω στο insomnia σε καλύπτουμε με όλες της εκδοχές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.