32bit vs 64bit (x86 vs x64)

32bit vs 64bit

Αποτελέσματα της δημοσκόπησης (Ψήφισαν 9)
  • 32bit

    Ψήφοι: 3 33.3%
  • 64bit

    Ψήφοι: 6 66.7%

Boom

Επιφανές μέλος

Ο Boom αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 12,249 μηνύματα.
Ποια η διαφορά μεταξύ των win 7 32 bit και των win 7 64 bit;
Ακόμη, ένα σύστημα με 64 bit μπορεί να παίξει ένα πρόγραμμα που προορίζεται για 32 bit;
 

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

fockos

Επιφανές μέλος

Ο fockos αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Νευρολόγος και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 15,088 μηνύματα.
Ποια η διαφορά μεταξύ των win 7 32 bit και των win 7 64 bit;
Ακόμη, ένα σύστημα με 64 bit μπορεί να παίξει ένα πρόγραμμα που προορίζεται για 32 bit;


Αυτή την απορία είχα και εγώ :redface: και εβαλα τα 64 γιατί είχε μεγαλύτερο νούμερο :redface:
Πολλά προγράμματα δεν τρέχουνε. Συνήθως τρεχουνε αλλα δεν είναι ο κανόνας.

Για αυτό βάλε τα 32 χωρίς να ρωτάς :D

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

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

Boom

Επιφανές μέλος

Ο Boom αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 12,249 μηνύματα.
Πώς να τα βάλω; :eek:
Εμένα αυτά είχε όταν τον πήρα (64).
Απλά προσπαθούσε να μου το εξηγήσει κάποιος και μου έδινε ως παράδειγμα τα στρέμματα από τα χωράφια.
Jesus, δεν κατάλαβα Αλλάχ.
 

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

Morelo

Πολύ δραστήριο μέλος

Ο Morelo αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Φοιτητής/τρια. Έχει γράψει 1,475 μηνύματα.
Εγω γνωριζω πως τα 64 bit προοριζοντε για υπολογιστες οι οποιοι εχουν μνημη >2gb ετσι ωστε να μπορουν να αξιοποιουν ολους τους πορους της μνημης!
Αν εχεις π.χ 4gb μνημη και εχεις 32bit συστημα τα windows αναγνωριζουν μονο τα 2gb με αποτελεσμα να μην αξιοπειται σωστα ολη η διαθεσιμη μνημη!
 

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

koum

Πολύ δραστήριο μέλος

Ο koum αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Συνταξιούχος και μας γράφει απο Άγιος Πέτρος (Αρκαδία). Έχει γράψει 1,238 μηνύματα.
Ποια η διαφορά μεταξύ των win 7 32 bit και των win 7 64 bit;
Ακόμη, ένα σύστημα με 64 bit μπορεί να παίξει ένα πρόγραμμα που προορίζεται για 32 bit;

Οι διαφορές είναι ιδιαίτερα μικρές πρακτικά, με την πιο ουσιαστική να είναι αυτή της μεγαλύτερης μνήμης ram που μπορεί να "δει" ένα 64-bit λειτουργικό. Στα 32-bit το max είναι 3Gb, ανεξάρτητα από το αν εσύ θα βάλεις μεγαλύτερη ram. Σε ορισμένα συγκριτικά στο net, φαίνεται η διαφορά που έχουν στην απόδοση. Ωστόσο, ακόμα δεν αξιοποιούνται πλήρως τα 64-bit, και για αυτό ευθύνεται κυρίως η μη αξιοποίησή τους από το υπάρχον software. Το μέλλον είναι στα 64-bit φυσικά, οπότε δεν υπάρχει λόγος να γυρίσεις στα 32. Πολλά προγράμματα που έχουν προδιαγραφές 32-bit τρέχουν σε 64-bit, το αντίστροφο δεν ισχύει. Αυτό που αλλάζει είναι η αρχιτεκτονική των 64-bit, και από αυτήν επωφελούνται κυρίως γραφίστες, επιχειρήσεις κλπ...


Ένα link από τη Microsoft (:mpliaks:) για όποιες απορίες.
Κι άλλο ένα από τη Wiki για τις βασικές διαφορές τους.



:)
 

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

fockos

Επιφανές μέλος

Ο fockos αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Νευρολόγος και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 15,088 μηνύματα.
Ισχύει αυτό που λέει ο Morelo και ο Koum αλλά είναι παραπλανητικό γιατί τα windows 7 64 bit καταναλώνουν πολύ περισσότερη μνήμη από ότι τα 32 για τα ίδια πράγματα. Άρα δώρο άδωρο.

Βασικά από όσο κατάλαβα τα 64 εκμεταλεύονται την αρχιτεκτονική 64bit των επεξεργαστών που την υποστηρίζουν. Η κλασική αρχιτεκτονική x86 είναι των 32 bits. Βασικά με την x64 αρχιτεκτονικής κάθε κύκλος μια εντολής μπορεί να έχει 64 bit {0 , 1} άρα σε εναν κύκλο μπορεί να εκτελέσει περισσότερα πράγματα. Βέβαια αν εγκαταστήσεις την έκδοση 32 bits του λειτουργικού σε σύστημα με χ64 επεξεργαστή δεν μπορεί να αξιοποιηθούν αυτές οι δυνατότητες. Υποτίθεται ότι συμφέρει (για εμένα ούτε πάλι δεν συμφέρει) για άτομα που χρησιμοποιούν ένα πρόγραμμα που βγαίνει σε 64 bit. Aν και η microsoft στο link του koum δηλώνει ότι τα 64 bit windows μπορούν να τρέχουν 32 bit εφαρμογές δεν ισχύει σε όλες τις περιπτώσεις.....
 

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

JosefK

Πολύ δραστήριο μέλος

Ο Μιχαήλ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Tatoo artist. Έχει γράψει 1,361 μηνύματα.
Ισχύει αυτό που λέει ο Morelo και ο Koum αλλά είναι παραπλανητικό γιατί τα windows 7 64 bit καταναλώνουν πολύ περισσότερη μνήμη από ότι τα 32 για τα ίδια πράγματα. Άρα δώρο άδωρο.

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

Βασικά με την x64 αρχιτεκτονικής κάθε κύκλος μια εντολής μπορεί να έχει 64 bit {0 , 1} άρα σε εναν κύκλο μπορεί να εκτελέσει περισσότερα πράγματα.

Λάθος διατύπωση. Σε κάθε αρχιτεκτονική ένας κύκλος εντολής αποτελείται από μία εντολή, άρα δεν είναι ότι σε 64 bit εκτελεί περισσότερα πράγματα. Απλώς χρησιμοποιεί μεγαλύτερους καταχωρητές, άρα επεξεργάζεται δεδομένα μεγαλύτερου μεγέθους. Επιπλέον, μία εντολή που εκτελείται σε ένα κύκλο συνήθως δεν είναι αποθηκευμένη σε μία μόνο θέση μνήμης (64 bit, 32 bit ή όσο είναι τέλος πάντων μία θέση μνήμης ανάλογα με την αρχιτεκτονική του συστήματος) αλλά σε περισσότερες θέσεις μνήμης, ανάλογα τι είδους εντολή είναι.
 

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

fockos

Επιφανές μέλος

Ο fockos αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Νευρολόγος και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 15,088 μηνύματα.
Βρήκα αυτό το κείμενο που εξηγεί καποια πράγματα και πραγματοποιει κάποιες δοκιμές. Επιπλέον κατάλαβα γιατί δεν μου τρέχανε ορισμένες εφαρμογές στα 64 bits. Προφανώς γιατι παράλληλα εγκαθιστούσαν μη συμβατούς drivers.
Δεν είναι παράλογο να καταναλώνουν περισσότερη μνήμη, αλλά το "δώρο άδωρο" είναι υπερβολή. Αν ήταν έτσι θα είχαμε μείνει στους επεξεργαστές των 8 bit.
To δώρο άδωρο το είπα για την τωρινή κατάσταση που τα laptop δεν έχουν τόση πολύ μνήμη. Το μέλλον είναι 64bits λόγω μνήμης. Αλλά αν κάποιος έχε π.χ. 2 gb μνήμη και βάλει 64 bit τότε θα ξεμαίνει αμέσως από μνήμη καθώς τα 64 bit καταναλώνουν πολύ περισσότερο μνήμη και το σύστημα θα σέρνεται αν ξεπεράσει τα 2 gb. Για μένα όποιος έχει μέχρι 4gb ram δεν αξίζει να βάλεις windows 7 64 bits. Προφανώς αν έχεις 16 gb ram τα 64 bit είναι μονόδρομος.
 

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

JosefK

Πολύ δραστήριο μέλος

Ο Μιχαήλ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Tatoo artist. Έχει γράψει 1,361 μηνύματα.
Βρήκα αυτό το κείμενο που εξηγεί καποια πράγματα και πραγματοποιει κάποιες δοκιμές. Επιπλέον κατάλαβα γιατί δεν μου τρέχανε ορισμένες εφαρμογές στα 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 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

iJohnnyCash

e-steki.gr Founder

Ο Panayotis Yannakas αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 34 ετών, επαγγέλεται Επιχειρηματίας και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 24,043 μηνύματα.
Ο μοναδικός λόγος που κάποιος 32bit είναι καθαρά αν το επάγγελμα του απαιτεί προγράμματα που δεν υποστηρίζουν ακόμη x64 αρχιτεκτονική. Για παράδειγμα, πολλές εξωτερικές κάρτες ήχου δεν έχουν 64bit drivers.

Κατά τα άλλα ο μέσος χρήστης, ακόμη και αν έχει κάτι που δεν υποστηρίζει 32bit (π.χ. antivirus), υπάρχουν σίγουρα πολλές εναλλακτικές λύσεις. Όπως και να το κάνουμε, η x86 αρχιτεκτονική είναι ξεπερασμένη (Για παράδειγμα αν χρησιμοποιείτε πολύ excel, τότε ξεχάστε το 32bit λειτουργικό, εκτός ότι στο excel υπάρχουν διαφορές στις επιδόσεις, το 32bit office δεν υποστηρίζει αρχεία μεγαλύτερα των 4GB).
 

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

Γιώργος

Τιμώμενο Μέλος

Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος. Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 30,791 μηνύματα.
Για να ξεκαθαρίσουμε λίγο το θέμα με το ότι τα 64bit συστήματα καταναλώνουν περισσότερη μνήμη.

Ισχύει αυτό που λέει ο Morelo και ο Koum αλλά είναι παραπλανητικό γιατί τα windows 7 64 bit καταναλώνουν πολύ περισσότερη μνήμη από ότι τα 32 για τα ίδια πράγματα. Άρα δώρο άδωρο.
Εάν καταναλώνουν "πολύ περισσότερη μνήμη" δεν είναι ότι φταίει το hardware, αλλά είτε το λειτουργικό που το διαχειρίζεται (Windows) είτε το πρόγραμμα που τρέχει.

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


  • Για να δώσω ένα απλό παράδειγμα, μία πληροφορία μπορεί να είναι πολύ μεγάλη, οπότε σε ένα 32bit σύστημα να πρέπει να "σπάσει" σε δύο blocks των 32bit. Εάν δεν υπάρχει πρόνοια για 64bit συστήματα, πάλι στα 64bits θα χρησιμοποιηθούν 2 blocks των 32bit αντί για 1 των 64bit.
  • Λόγω όμως του ότι σε ένα 64bit σύστημα δεν υπάρχουν 32bit blocks αλλά 64 bit blocks, τότε χρησιμοποιούνται 2 x 64bit blocks, τα οποία έχουν μέχρι τη μέση χρήσιμη πληροφορία και έπειτα μηδενικά (λέγεται padding). Έτσι λοιπόν χρησιμοποιείται διπλάσια μνήμη.

Αρκετά όμως freeware και open-source προγράμματα έχουν λάβει υπόψιν τέτοιες περιπτώσεις, οπότε αντί να χρησιμοποιήσουν 2 x 32bit blocks, χρησιμοποιούν 1 x 64bit. Έτσι λοιπόν όχι μόνο δεν αυξάνεται η μνήμη που χρησιμοποιείται, αλλά πολλές φορές μπορεί να μειωθεί κιόλας, γιατί ένα πρόγραμμα μπορεί να εκμεταλλευτεί το γεγονός ότι ένας 64bit επεξεραστής έχει αυξημένο αριθμό καταχωρητών (registers - είναι κάποιου είδους μνήμης που είναι ακριβώς δίπλα στον επεξεργαστή και είναι η γρηγορότερη μνήμη στον Η/Υ σας), με αποτέλεσμα μία πληροφορία να μην χρειαστεί καν να μείνει στην μνήμη, εφόσον υπάρχει στους registers του επεξεργαστή.



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

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

iJohnnyCash

e-steki.gr Founder

Ο Panayotis Yannakas αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 34 ετών, επαγγέλεται Επιχειρηματίας και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 24,043 μηνύματα.
Γιώργο, γιατί κάποια πρόγραμμα αρνούνται να είναι 64bit; Τόσο δύσκολο είναι; Στην ουσία δεν πρέπει να αλλάξουν μόνο το κομμάτι του κώδικα που διαχειρίζεται την ram; Λογικά σε μεγάλο project αυτό μπορεί να είναι απλά μια κλάση όποτε μιλάμε για ακόμη λιγότερο χρόνο.

Ξέρω ότι παρουσιάσω το θέμα πολύ απλοϊκά, ωστόσο δεν προγραμματιστής
 

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

Γιώργος

Τιμώμενο Μέλος

Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος. Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 30,791 μηνύματα.
Γιώργο, γιατί κάποια πρόγραμμα αρνούνται να είναι 64bit; Τόσο δύσκολο είναι; Στην ουσία δεν πρέπει να αλλάξουν μόνο το κομμάτι του κώδικα που διαχειρίζεται την ram; Λογικά σε μεγάλο project αυτό μπορεί να είναι απλά μια κλάση όποτε μιλάμε για ακόμη λιγότερο χρόνο.

Ξέρω ότι παρουσιάσω το θέμα πολύ απλοϊκά, ωστόσο δεν προγραμματιστής
Ούτε εγώ είμαι προγραμματιστής :P εγώ αγαπώ το hardware.

Κοίτα, πιστεύω ότι οφείλεται στο ότι ένα κλειστό πρόγραμμα έρχεται για να "κάτσει" σε 32-bit επεξεργαστή. Τι θέλω να πω; Ας το πάρουμε απ' την αρχή. Θα προσπαθήσω κι εγώ να παρουσιάσω το θέμα όσο πιο απλοϊκά γίνεται, επιχειρώντας μια αναλογία με το μαγείρεμα ενός γλυκού (!)

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

Ποιο είναι το πρόβλημα;

  • Κατά το φτιάξιμο του γλυκού το έχεις φτιάξει με τέτοιο τρόπο ώστε να αντέχει και εκτός ψυγείου, ωστόσο δεν είναι το ίδιο νόστιμο. Αυτό το κάνεις γιατί υπάρχει κόσμος που μπορεί να μην έχει ψυγείο.
  • Θα μπορούσες όμως να το έφτιαχνες με τέτοιο τρόπο ώστε να γίνει πιο νόστιμο, αλλά στην περίπτωση αυτή χρειάζεται ψυγείο.
Με το πρόγραμμα είναι το ίδιο πράγμα. Εφόσον η εταιρία σου δίνει ένα κλειστό πρόγραμμα, το πρόγραμμα αυτό έχει μεταγλωττιστεί για να δουλεύει σε 32-bit συστήματα. Έτσι λοιπόν σε ένα 64-bit σύστημα θα υπολειτουργεί.

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

-----

Θα μου πεις τώρα, γιατί αρκετές εταιρίες λοιπόν δεν ξαναγράφουν τον κώδικά τους βγάζοντας και 64-bit έκδοση, όπως φερ' ειπείν η Mathworks που έχει βγάλει Matlab και για 32-bit και για 64-bit;

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

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

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

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

iJohnnyCash

e-steki.gr Founder

Ο Panayotis Yannakas αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 34 ετών, επαγγέλεται Επιχειρηματίας και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 24,043 μηνύματα.
Αφού εσύ αγαπάς το hardware, σου έχω ακόμη μια ερώτηση.

Ένας αργός επεξεργαστής δεν θα ήταν καλύτερο να είναι 64bit και όχι 32bit, αφού στην πρώτη περίπτωση θα μπορούσε να διαχειρίζεται περισσότερα δεδομένα σε έναν κύκλο; (Στο μυαλό μου έχω τους Intel Atom)
 

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

Γιώργος

Τιμώμενο Μέλος

Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος. Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 30,791 μηνύματα.
Αφού εσύ αγαπάς το hardware, σου έχω ακόμη μια ερώτηση.

Ένας αργός επεξεργαστής δεν θα ήταν καλύτερο να είναι 64bit και όχι 32bit, αφού στην πρώτη περίπτωση θα μπορούσε να διαχειρίζεται περισσότερα δεδομένα σε έναν κύκλο; (Στο μυαλό μου έχω τους Intel Atom)
Για να απαντήσω, όρισέ μου το "αργός", το "κύκλος" και ειδικά το "καλύτερο".

  • Αργός ως προς τι; Ως προς τον χρόνο που χρειάζεται να εκτελεστεί μία εντολή; (Κύκλος Εντολής)
  • Τι κύκλο; Κύκλος εντολής ή μηχανής;
  • Καλύτερο: με βάση ποιο κριτήριο; Ειδικά αυτό όρισέ μου.
Πολύ χοντρικά:

  • Κύκλος μηχανής είναι ο χρόνος που μεσολαβεί μεταξύ δύο "χτυπημάτων" του ρολογιού της CPU. Πχ όταν λέμε CPU @ 2.00 GHz, τότε η συχνότητα του ρολογιού είναι 2 GHz, δηλαδή ο κύκλος μηχανής είναι 0.5 nsec.
  • Κύκλος εντολής είναι ο χρόνος που μεσολαβεί για την εκτέλεση μίας εντολής. Συνήθως στους μοντέρνους επεξεργαστές είναι κάποιο ακέραιο πολλαπλάσιο του κύκλου μηχανής, καθώς η ... διαδικασία ολοκλήρωσης μίας εντολής έχει "τεμαχιστεί" σε πολλά υπο-στάδια, τα οποία και διαρκούν έναν κύκλο μηχανής. Π.χ. ένα κύκλο για ανάγνωση εντολής, ένα για εκτέλεση πράξης, ένα για write-back του αποτελέσματος στους registers.

Πάντως κοίτα, εφόσον οι 64-bit επεξεργαστές μπορούν να χειριστούν πολύ μεγαλύτερο data-set, ενδέχεται κάποιες εντολές να χρειαστούν πολύ περισσότερο χρόνο για να εκτελεστούν, λ.χ. εντολές που αφορούν πράξεις κινητής υποδιαστολής. Οπότε θα πρέπει να μου πεις τι εννοείς με το "καλύτερο".
 

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

JosefK

Πολύ δραστήριο μέλος

Ο Μιχαήλ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Tatoo artist. Έχει γράψει 1,361 μηνύματα.
Αρκετά όμως freeware και open-source προγράμματα έχουν λάβει υπόψιν τέτοιες περιπτώσεις, οπότε αντί να χρησιμοποιήσουν 2 x 32bit blocks, χρησιμοποιούν 1 x 64bit. Έτσι λοιπόν όχι μόνο δεν αυξάνεται η μνήμη που χρησιμοποιείται, αλλά πολλές φορές μπορεί να μειωθεί κιόλας, γιατί ένα πρόγραμμα μπορεί να εκμεταλλευτεί το γεγονός ότι ένας 64bit επεξεραστής έχει αυξημένο αριθμό καταχωρητών (registers - είναι κάποιου είδους μνήμης που είναι ακριβώς δίπλα στον επεξεργαστή και είναι η γρηγορότερη μνήμη στον Η/Υ σας), με αποτέλεσμα μία πληροφορία να μην χρειαστεί καν να μείνει στην μνήμη, εφόσον υπάρχει στους registers του επεξεργαστή.

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

Ένας απλός λόγος που σε αρχιτεκτονική περισσότερων bit το ίδιο λογισμικό μπορεί να απαιτεί περισσότερη μνήμη είναι το γεγονός ότι οι μεταβλητές τύπου pointer καταλαμβάνουν περισσότερα bytes στη μνήμη.

Θα μου πεις τώρα, γιατί αρκετές εταιρίες λοιπόν δεν ξαναγράφουν τον κώδικά τους βγάζοντας και 64-bit έκδοση, όπως φερ' ειπείν η Mathworks που έχει βγάλει Matlab και για 32-bit και για 64-bit;

Σίγουρη απάντηση δεν μπορώ να σου δώσω.

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


  • Κύκλος μηχανής είναι ο χρόνος που μεσολαβεί μεταξύ δύο "χτυπημάτων" του ρολογιού της CPU. Πχ όταν λέμε CPU @ 2.00 GHz, τότε η συχνότητα του ρολογιού είναι 2 GHz, δηλαδή ο κύκλος μηχανής είναι 0.5 nsec.
  • Κύκλος εντολής είναι ο χρόνος που μεσολαβεί για την εκτέλεση μίας εντολής. Συνήθως στους μοντέρνους επεξεργαστές είναι κάποιο ακέραιο πολλαπλάσιο του κύκλου μηχανής, καθώς η ... διαδικασία ολοκλήρωσης μίας εντολής έχει "τεμαχιστεί" σε πολλά υπο-στάδια, τα οποία και διαρκούν έναν κύκλο μηχανής. Π.χ. ένα κύκλο για ανάγνωση εντολής, ένα για εκτέλεση πράξης, ένα για write-back του αποτελέσματος στους registers.

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

Πάντως κοίτα, εφόσον οι 64-bit επεξεργαστές μπορούν να χειριστούν πολύ μεγαλύτερο data-set, ενδέχεται κάποιες εντολές να χρειαστούν πολύ περισσότερο χρόνο για να εκτελεστούν, λ.χ. εντολές που αφορούν πράξεις κινητής υποδιαστολής. Οπότε θα πρέπει να μου πεις τι εννοείς με το "καλύτερο".

Πηγή και γι αυτό υπάρχει;;
 

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

iJohnnyCash

e-steki.gr Founder

Ο Panayotis Yannakas αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 34 ετών, επαγγέλεται Επιχειρηματίας και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 24,043 μηνύματα.
Για να απαντήσω, όρισέ μου το "αργός", το "κύκλος" και ειδικά το "καλύτερο".

  • Αργός ως προς τι; Ως προς τον χρόνο που χρειάζεται να εκτελεστεί μία εντολή; (Κύκλος Εντολής)
  • Τι κύκλο; Κύκλος εντολής ή μηχανής;
  • Καλύτερο: με βάση ποιο κριτήριο; Ειδικά αυτό όρισέ μου.
Πολύ χοντρικά:

  • Κύκλος μηχανής είναι ο χρόνος που μεσολαβεί μεταξύ δύο "χτυπημάτων" του ρολογιού της CPU. Πχ όταν λέμε CPU @ 2.00 GHz, τότε η συχνότητα του ρολογιού είναι 2 GHz, δηλαδή ο κύκλος μηχανής είναι 0.5 nsec.
  • Κύκλος εντολής είναι ο χρόνος που μεσολαβεί για την εκτέλεση μίας εντολής. Συνήθως στους μοντέρνους επεξεργαστές είναι κάποιο ακέραιο πολλαπλάσιο του κύκλου μηχανής, καθώς η ... διαδικασία ολοκλήρωσης μίας εντολής έχει "τεμαχιστεί" σε πολλά υπο-στάδια, τα οποία και διαρκούν έναν κύκλο μηχανής. Π.χ. ένα κύκλο για ανάγνωση εντολής, ένα για εκτέλεση πράξης, ένα για write-back του αποτελέσματος στους registers.

Πάντως κοίτα, εφόσον οι 64-bit επεξεργαστές μπορούν να χειριστούν πολύ μεγαλύτερο data-set, ενδέχεται κάποιες εντολές να χρειαστούν πολύ περισσότερο χρόνο για να εκτελεστούν, λ.χ. εντολές που αφορούν πράξεις κινητής υποδιαστολής. Οπότε θα πρέπει να μου πεις τι εννοείς με το "καλύτερο".
Πολύ περιληπτικά, σκεφτόμουν ότι οι Intel Atom θα ήταν καλύτεροι (πιο γρήγοροι) αν ήταν 64bit επειδή μπορούν να χειριστούν σε μια στιγμή μεγαλύτερο όγκο από bits.

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

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

Επεξεργάστηκε από συντονιστή:

koum

Πολύ δραστήριο μέλος

Ο koum αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Συνταξιούχος και μας γράφει απο Άγιος Πέτρος (Αρκαδία). Έχει γράψει 1,238 μηνύματα.
Νομίζω πως ψάχνετε κάτι τέτοιο:

"The main disadvantage of 64-bit architectures is that relative to 32-bit architectures, the same data occupies more space in memory (due to swollen pointers and possibly other types and alignment padding). This increases the memory requirements of a given process and can have implications for efficient processor cache utilization. Maintaining a partial 32-bit model is one way to handle this and is in general reasonably effective. For example, the z/OS operating system takes this approach currently, requiring program code to reside in 31-bit address spaces (the high order bit is not used in address calculation on the underlying hardware platform) while data objects can optionally reside in 64-bit regions.
Currently, most proprietary x86 software is compiled into 32-bit code, with less being also compiled into 64-bit code (although the trend is rapidly equalizing[citation needed]), so much does not take advantage of the larger 64-bit address space or wider 64-bit registers and data paths on x86 processors, or the additional registers in 64-bit mode. However, users of most RISC platforms, and users of free or open source operating systems (where the source code is available for recompiling with a 64-bit compiler) have been able to use exclusive 64-bit computing environments for years due to the likelihood of the existence of someone willing to compile the code thusly. Not all such applications require a large address space nor manipulate 64-bit data items, so they wouldn't benefit from the larger address space or wider registers and data paths. The main advantage to 64-bit versions of such applications is the ability to access more registers in the x86-64 architecture.
"


Πηγή
 

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

Γιώργος

Τιμώμενο Μέλος

Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος. Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 30,791 μηνύματα.
Προειδοποιώ ότι το παρακάτω post εμβαθύνει πολύ στις περιοχές του computer architecture. :P

Κάθε πρόγραμμα φορτώνεται ολόκληρο στην κύρια μνήμη, όχι στους καταχωρητές του επεξεργαστή. Οι καταχωρητές χρησιμοποιούνται ώστε να γίνονται εκεί οι διάφορες αριθμητικές και λογικές πράξεις. Αυτό που λες για πληροφορία που υπάρχει στους registers και δε χρειάζεται να μείνει στη μνήμη δε το πολυκαταλαβαίνω.
Κατ' αρχάς μία βαριά εφαρμογή όπως το Matlab δεν μπορεί να φορτωθεί εξ' ολοκλήρου στη μνήμη, αφενός γιατί η μνήμη σου πάει 2-4-6-8GB και αφετέρου γιατί υπάρχουν κι άλλα processes που τρέχουν και χρειάζονται και αυτά RAM.

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

Για το λόγο αυτό, μπορεί να επιλέξει ο manufacturer αυτά τα δεδομένα να τα πετάξει στο swap φερ' ειπείν και να φέρει σε εκείνες τις θέσεις κάποιες άλλες χρήσιμες πληροφορίες.

Τις caches τις αναφέρω γιατί είναι το αμέσως χαμηλότερο επίπεδο που θα πάει κάποια πληροφορία άμα φύγει απ' τους registers. Εάν όλα σου τα δεδομένα είναι στις caches, η πρόσβαση RAM δεν θα σου χρειαστεί. Αντίστοιχα, εάν έχεις περισσότερους registers (κάτι που ισχύει στην x64 αρχιτεκτονική -> πηγή) ενδέχεται να χρειαστείς λιγότερες προσβάσεις στην cache -> άρα και στην RAM.


Ένας απλός λόγος που σε αρχιτεκτονική περισσότερων bit το ίδιο λογισμικό μπορεί να απαιτεί περισσότερη μνήμη είναι το γεγονός ότι οι μεταβλητές τύπου pointer καταλαμβάνουν περισσότερα bytes στη μνήμη.
Το ανέφερα παραπάνω, είναι το padding.


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

Δεν έχω πρόχειρο τώρα ένα παράδειγμα, αλλά μπορώ να σου δώσω κώδικα που σε 2-way or 4-way set-associative caches θα δουλεύει εξαιρετικά, αλλά σε directed mapped θα έχεις conflicts, δηλαδή δύο memory blocks θα γίνονται mapped στην ίδια cache line.

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


Για τον κύκλο μηχανής έχω βρει διαφορετικούς ορισμούς. Μερικοί ταυτίζουν τον όρο "κύκλο μηχανής" με τον όρο "κύκλο εντολής" ενώ μερικοί άλλοι ως κύκλο μηχανής ορίζουν το καθένα από τα επιμέρους στάδια που λες ότι περιλαμβάνονται σε ένα κύκλο εντολής. Αν δεχτούμε ως σωστό το 2ο ορισμό, και πάλι δεν είναι απόλυτο ότι καθένα από τα στάδια αυτά απαιτεί μόνο ένα κύκλο ρολογιού.
Δεν είπα ότι ντε και καλά το κάθε στάδιο για την ολοκλήρωση μίας εντολής διαρκεί ντε και καλά έναν κύκλο. Σε out-of-order επεξεργαστές ειδικά, δηλαδή επεξεργαστές που ολοκληρώνουν τις εντολές εκτός σειράς, μπορεί να δεις εντολές κινητής υποδιαστολής να θέλουν και 5-20 κύκλους παραπάνω να ολοκληρωθούν, σε σχέση με τις αντίστοιχες πράξεις ακεραίων. Αρκετά τέτοια παραδείγματα μπορείς να βρεις σε αυτό το βιβλίο.


Πηγή και γι αυτό υπάρχει;;
Θες να κάνεις πολλαπλασιασμό δύο 32-bit αριθμών και δύο 64-bit αριθμών. Εάν θες να διατηρήσεις την κατανάλωση ενέργειας (power dissipation) στα ίδια επίπεδα, αναγκαστικά η δεύτερη πράξη θα διαρκέσει περισσότερο -> Βαθαίνεις περισσότερο το pipeline σου [ή ρίχνεις το ρολόι σου] -> Μία εντολή χρειάζεται περισσότερο χρόνο ολοκλήρωσης. Πηγή δεν έχει εδώ. :P

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

----

@ exposed_bone / Johnny Cash : με βάση αυτό που είπα τώρα, ναι μπορεί να αποβεί ένα 64-bit σύστημα πιο "γρήγορο", γιατί μεγαλύτερο data-set -> μικρότερος αριθμός εντολών (loop iterations). Αλλά παίζουν και άλλοι παράγοντες, όπως:

  • Σε επίπεδο επεξεργαστή, ενδέχεται να μεγαλώσει λίγο η διάρκεια ολοκλήρωσης μιας εντολής, όπως προανέφερα, αλλά αίσθησή μου είναι ότι δεν θα επηρεάσει τόσο πολύ, λόγω τεχνικών διάδοσης κρατουμένων, σύμφωνα με τις οποίες κατά την εκτέλεση μίας πρόσθεσης κάνεις πρόβλεψη των κρατουμένων που θα χρειαστείς, επομένως "παραλληλοποιείς" κάποια τμήματά της και δεν την εκτελείς bit-προς-bit, όπως θα έκανες με το χέρι.
  • Το σοβαρότερο issue είναι το εξής: Μήπως το μεγαλύτερο data-set θα είναι πολύ μεγάλο για τις caches σου; Σε αυτήν την περίπτωση μπορεί να εκτοπίζεις συνέχεια δεδομένα και εν τέλει η εκτέλεση να γίνει πιο αργή.

Δεν είναι δηλαδή ένα yes/no ερώτημα, υπάρχουν tradeoffs που εξαρτώνται από διάφορους παράγοντες.
 

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

JosefK

Πολύ δραστήριο μέλος

Ο Μιχαήλ αυτή τη στιγμή δεν είναι συνδεδεμένος. Επαγγέλεται Tatoo artist. Έχει γράψει 1,361 μηνύματα.
Κατ' αρχάς μία βαριά εφαρμογή όπως το 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 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Τελευταία επεξεργασία:

Χρήστες Βρείτε παρόμοια

  • Τα παρακάτω 0 μέλη και 1 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα:
    Tα παρακάτω 0 μέλη διάβασαν αυτό το θέμα:
  • Φορτώνει...
Top