JosefK
Πολύ δραστήριο μέλος
Ο Μιχαήλ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Tatoo artist. Έχει γράψει 1,361 μηνύματα.
06-12-10
02:01
Κατ' αρχάς μία βαριά εφαρμογή όπως το Matlab δεν μπορεί να φορτωθεί εξ' ολοκλήρου στη μνήμη, αφενός γιατί η μνήμη σου πάει 2-4-6-8GB και αφετέρου γιατί υπάρχουν κι άλλα processes που τρέχουν και χρειάζονται και αυτά RAM.
Έπειτα, εξαρτάται καθαρά από την υλοποίηση το αν χρειάζεται μία πληροφορία να μείνει ή όχι στην RAM. Γιατί πολύ απλά ένα πρόγραμμα μπορεί να έχει δεδομένα και στην cache του επεξεργαστή και αν έχεις μία πολιτική write-back τότε σε περίπτωση που ανανεώσεις τα δεδομένα σου στην cache, δεν τα ανανεώνεις και στην RAM. Επομένως, εάν πας στην RAM και κοιτάξεις την κατάσταση του προγράμματος, μπορεί να μην είναι η πραγματική του εικόνα, καθώς μέσα στον επεξεργαστή έχεις ανανεωμένες τιμές.
Για το λόγο αυτό, μπορεί να επιλέξει ο manufacturer αυτά τα δεδομένα να τα πετάξει στο swap φερ' ειπείν και να φέρει σε εκείνες τις θέσεις κάποιες άλλες χρήσιμες πληροφορίες.
Τις caches τις αναφέρω γιατί είναι το αμέσως χαμηλότερο επίπεδο που θα πάει κάποια πληροφορία άμα φύγει απ' τους registers. Εάν όλα σου τα δεδομένα είναι στις caches, η πρόσβαση RAM δεν θα σου χρειαστεί. Αντίστοιχα, εάν έχεις περισσότερους registers (κάτι που ισχύει στην x64 αρχιτεκτονική -> πηγή) ενδέχεται να χρειαστείς λιγότερες προσβάσεις στην cache -> άρα και στην RAM.
Γιώργο γράφεις πολλά πράγματα. Για να κάνουμε μια ανακεφαλαίωση, όλος ο συλλογισμός σου ώστε να αποδείξεις ότι μπορεί σε x64 αρχιτεκτονική ένα πρόγραμμα να καταλαμβάνει λιγότερη μνήμη είναι νομίζω η τελευταία πρόταση : "Αντίστοιχα, εάν έχεις περισσότερους registers (κάτι που ισχύει στην x64 αρχιτεκτονική -> πηγή) ενδέχεται να χρειαστείς λιγότερες προσβάσεις στην cache -> άρα και στην RAM."
Θεωρητικά έχει κάποια λογική, αλλά πρακτικά νομίζω δεν έχει καμία απολύτως αξία. Πόσους registers έχει η CPU;;;
Εντελώς αμελητέο πλήθος σε σχέση με το μέθεγος της κανονικής μνήμης. Ακόμα κι αν οι compilers φτιάχνουν κώδικα μηχανής που να αξιοποιεί στο μέγιστο τους registers αυτούς, και πάλι η μνήμη που κερδίζεται λογικά δεν καλύπτει το μέγεθος της επιπλεόν μνήμης που χρησιμοποιεί η 64bit αρχιτεκτονική για τους λόγους που έχουμε αναφέρει νωρίτερα. Κι αν πάλι κάποιο πρόγραμμα για το λόγο αυτό μπορεί σε 64bit να καταλαμβάνει λιγότερη RAM, τότε σίγουρα θα πρόκειται για πρόγραμμα που ούτως ή άλλως καταλαμβάνει πολύ λίγη RAM.
Αν επιτρέπεται, όλος αυτός ο συλλογισμός για το πως σε 64bit μπορεί να μειωθεί η χρήση της RAM είναι κάτι που έχεις διαβάσει/ακούσει κάπου ή είναι δικές σου σκέψεις;
Για τα υπόλοιπα που γράφεις με μία γρήγορη ανάγνωση που τους έκανα δε βρίσκω κάτι που να διαφωνώ.
Παναγιώτη, ο λόγος για τον οποίο ζήτησα σε κάποια σημεία από το Γιώργο πηγές γι αυτά που γράφει ήταν επειδή δεν καταλάβαινα τους συλλογισμούς του. Ουσιαστικά δε με ενδιέφερε τόσο η ίδια η πηγή όσο η τεκμηρίωση αυτών που έγραφε.
edit : Ξαναρίχνω μία ματιά στα τελευταία μηνύματά σου. Στο ένα γράφεις
"Αρκετά όμως freeware και open-source προγράμματα έχουν λάβει υπόψιν τέτοιες περιπτώσεις, οπότε αντί να χρησιμοποιήσουν 2 x 32bit blocks, χρησιμοποιούν 1 x 64bit. Έτσι λοιπόν όχι μόνο δεν αυξάνεται η μνήμη που χρησιμοποιείται, αλλά πολλές φορές μπορεί να μειωθεί κιόλας"
ενώ στο τελευταίο γράφεις :
"ενδέχεται να χρειαστείς λιγότερες προσβάσεις στην cache -> άρα και στην RAM."
Δηλαδή άλλο είναι αυτό που γράφεις στο 1ο μήνυμα και άλλο αποδεικνύεις στο 2ο. Σίγουρα η αποδοτική χρήση των registers και της cache μειώνουν την πρόσβαση που απαιτείται στη RAM (αυξάνοντας έτσι την ταχύτητα), αλλά δε μειώνουν τη "μνήμη που χρησιμοποιείται" (δηλαδή τη μνήμη RAM που είναι κατηλλημένη). Αν κάνω λάθος διόρθωσέ με.
Σημείωση: Το μήνυμα αυτό γράφτηκε 13 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
JosefK
Πολύ δραστήριο μέλος
Ο Μιχαήλ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Tatoo artist. Έχει γράψει 1,361 μηνύματα.
01-12-10
22:00
Βρήκα αυτό το κείμενο που εξηγεί καποια πράγματα και πραγματοποιει κάποιες δοκιμές. Επιπλέον κατάλαβα γιατί δεν μου τρέχανε ορισμένες εφαρμογές στα 64 bits. Προφανώς γιατι παράλληλα εγκαθιστούσαν μη συμβατούς drivers.
To δώρο άδωρο το είπα για την τωρινή κατάσταση που τα laptop δεν έχουν τόση πολύ μνήμη. Το μέλλον είναι 64bits λόγω μνήμης. Αλλά αν κάποιος έχε π.χ. 2 gb μνήμη και βάλει 64 bit τότε θα ξεμαίνει αμέσως από μνήμη καθώς τα 64 bit καταναλώνουν πολύ περισσότερο μνήμη και το σύστημα θα σέρνεται αν ξεπεράσει τα 2 gb. Για μένα όποιος έχει μέχρι 4gb ram δεν αξίζει να βάλεις windows 7 64 bits. Προφανώς αν έχεις 16 gb ram τα 64 bit είναι μονόδρομος.
Σωστός. Συμφωνώ.
Αρκετά καλή και η σελίδα που παραθέτεις. Σε ένα σημείο μάλιστα γράφει πιο σωστά διατυπωμένο αυτό που έγραψες στο προηγούμενο ποστ και σου το επισήμανα ως λάθος.
"Οι μικροεπεξεργαστές από τους πρώτους ευρέως γνωστούς στην αγορά (π.χ. Z80, 6502, 8086), μετριόνταν ακριβώς με γνώμονα το πόσα bits μπορούσαν να μεταφέρουν και να επεξεργαστούν με την μία (σε κάθε κύκλο του ρολογιού)."
όχι σε κύκλο εντολής δηλαδή. τέλος πάντων, λεπτομέρειες...
Σημείωση: Το μήνυμα αυτό γράφτηκε 13 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
JosefK
Πολύ δραστήριο μέλος
Ο Μιχαήλ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Tatoo artist. Έχει γράψει 1,361 μηνύματα.
30-11-10
02:52
Ισχύει αυτό που λέει ο Morelo και ο Koum αλλά είναι παραπλανητικό γιατί τα windows 7 64 bit καταναλώνουν πολύ περισσότερη μνήμη από ότι τα 32 για τα ίδια πράγματα. Άρα δώρο άδωρο.
Δεν είναι παράλογο να καταναλώνουν περισσότερη μνήμη, αλλά το "δώρο άδωρο" είναι υπερβολή. Αν ήταν έτσι θα είχαμε μείνει στους επεξεργαστές των 8 bit.
Βασικά με την x64 αρχιτεκτονικής κάθε κύκλος μια εντολής μπορεί να έχει 64 bit {0 , 1} άρα σε εναν κύκλο μπορεί να εκτελέσει περισσότερα πράγματα.
Λάθος διατύπωση. Σε κάθε αρχιτεκτονική ένας κύκλος εντολής αποτελείται από μία εντολή, άρα δεν είναι ότι σε 64 bit εκτελεί περισσότερα πράγματα. Απλώς χρησιμοποιεί μεγαλύτερους καταχωρητές, άρα επεξεργάζεται δεδομένα μεγαλύτερου μεγέθους. Επιπλέον, μία εντολή που εκτελείται σε ένα κύκλο συνήθως δεν είναι αποθηκευμένη σε μία μόνο θέση μνήμης (64 bit, 32 bit ή όσο είναι τέλος πάντων μία θέση μνήμης ανάλογα με την αρχιτεκτονική του συστήματος) αλλά σε περισσότερες θέσεις μνήμης, ανάλογα τι είδους εντολή είναι.
Σημείωση: Το μήνυμα αυτό γράφτηκε 13 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.