it-swarm.asia

أنظمة 32 بت مقابل 64 بت

ما هي الاختلافات بين أنظمة 32 بت و 64 بت؟

إذا استخدمت كلاهما ، فما نوع الاختلافات الحادة التي مررت بها؟

هل ستكون مشكلة في استخدام برامج 32 بت على أنظمة 64 بت في بعض الحالات؟

219
Mehper C. Palavuzlar

ملاحظة: تنطبق هذه الإجابات على وحدات المعالجة المركزية المعيارية التي تستند إلى x86 (Intel و AMD) و Windows (كما تم تكوينها عادةً للمستخدمين النهائيين). يمكن أن تحتوي الرقاقات الأخرى 32 بت أو 64 بت وأنظمة التشغيل الأخرى وتكوينات أنظمة التشغيل الأخرى على مفاضلات مختلفة.

من منظور تقني ، يمنحك نظام التشغيل 64 بت:

  • للسماح للعمليات الفردية بمعالجة أكثر من 4 جيجابايت من RAM لكل (في الممارسة العملية ، معظم أنظمة تشغيل 32 بت وليس جميعها أيضًا تحد من إجمالي النظام القابل للاستخدام RAM إلى أقل من 4 جيجابايت ، وليس فقط لكل تطبيق الحد الأقصى).

  • تأخذ كافة المؤشرات 8 بايت بدلاً من 4 بايت. يكون التأثير على RAM ضئيلًا (نظرًا لأنه من غير المحتمل أن يكون لديك تطبيق مملوء بالجيجابايت من المؤشرات) ، ولكن في أسوأ الحالات النظرية ، قد يجعل ذلك ذاكرة التخزين المؤقت لوحدة المعالجة المركزية (CPU) قادرة على الاحتفاظ 1/2 أكبر عدد من المؤشرات (مما يجعلها فعالة 1/2 الحجم). بالنسبة لمعظم التطبيقات ، هذه ليست مشكلة ضخمة.

  • هناك العديد من سجلات وحدة المعالجة المركزية للأغراض العامة في وضع 64 بت. السجلات هي أسرع ذاكرة في النظام بأكمله. لا يوجد سوى 8 في وضع 32 بت و 16 تسجيلات للأغراض العامة في وضع 64 بت. في تطبيقات الحوسبة العلمية التي كتبت ، رأيت ما يصل إلى 30 ٪ زيادة في الأداء من خلال إعادة تجميع في وضع 64 بت (يمكن تطبيقي استخدام السجلات الإضافية حقا).

  • تسمح معظم أنظمة تشغيل 32 بت فقط للتطبيقات الفردية استخدام 2 جيجابايت من ذاكرة الوصول العشوائي ، حتى إذا كان لديك 4 جيجابايت مثبتة. وذلك لأن مساحة العنوان 2 غيغابايت الأخرى مخصصة لمشاركة البيانات بين التطبيقات ونظام التشغيل وللتواصل مع برامج التشغيل. سيتيح لك Windows و Linux ضبط هذه المقايضة لتكون 3 غيغابايت للتطبيقات ومشاركة 1 غيغابايت ، ولكن هذا يمكن أن يسبب مشاكل لبعض التطبيقات التي لا تتوقع التغيير. أعتقد أيضًا أنها قد تشل بطاقة رسومات بها 1 غيغابايت من RAM (لكنني لست متأكدًا). يمكن لنظام التشغيل 64 بت أن يوفر تطبيقات فردية 32 بت أقرب إلى 4 جيجا بايت كاملة للعب بها.

من منظور المستخدم:

  • عادةً ما تكون سرعة التطبيق أسرع لتطبيق 64 بت في نظام تشغيل 64 بت مقارنةً بإصدار 32 بت من التطبيق على نظام تشغيل 32 بت ، لكن معظم المستخدمين لن يروا هذه السرعة. لا تستفيد معظم التطبيقات للمستخدمين العاديين حقًا من السجلات الإضافية أو تتم موازنة الفوائد عن طريق مؤشرات أكبر تملأ ذاكرة التخزين المؤقت.

  • إذا كان لديك أي تطبيقات خنزير الذاكرة (مثل برامج تحرير الصور ، معالجة الفيديو ، الحوسبة العلمية ، وما إلى ذلك) ، إذا كان لديك (أو يمكنك شراء) أكثر من 3 جيجابايت من ذاكرة الوصول العشوائي ، ويمكنك الحصول على إصدار 64 بت من التطبيق ، الخيار سهل: استخدم نظام التشغيل 64 بت.

  • لا تحتوي بعض الأجهزة على برامج تشغيل 64 بت. تحقق من اللوحة الأم ، وجميع بطاقات المكونات ، وجميع أجهزة USB قبل إجراء التبديل. لاحظ أنه في الأيام الأولى من نظام التشغيل Windows Vista ، كان هناك الكثير من المشاكل مع برامج التشغيل. هذه الايام الامور افضل عموما.

  • إذا قمت بتشغيل العديد من التطبيقات في وقت كنت تنفد فيه RAM (عادةً ما يمكنك معرفة ذلك لأن جهاز الكمبيوتر الخاص بك يبدأ في التباطؤ وتسمع صوت محرك الأقراص الثابتة) ، فسوف تريد نظام تشغيل 64 بت (وذاكرة الوصول العشوائي كافية).

  • يمكنك تشغيل تطبيقات 32 بت (ولكن ليس برامج التشغيل) في Windows 64 بت بدون أي مشاكل. أسوأ تباطؤ قمت بقياسه للتطبيق 32 بت في Windows 64 بت هو حوالي 5٪ (وهذا يعني أنه إذا استغرق الأمر 60 ثانية للقيام بشيء في Windows 32 بت ، فقد استغرق الأمر 60 * 1.05 = 65 ثانية بحد أقصى مع نفس التطبيق 32 بت في ويندوز 64 بت).

ما يفعله 32 بت مقابل 64 بت لا يعني:

في أنظمة x86 ، يشير 32 بت مقابل 64 بت مباشرة إلى حجم المؤشرات. هذا كل شئ.

  • لا يشير إلى حجم نوع C int. يتم تحديد ذلك بواسطة تطبيق المحول البرمجي المعين ، وتختار معظم برامج التحويل الشائعة int 32 بت على أنظمة 64 بت.

  • لا يشير مباشرة إلى حجم السجلات العادية غير المؤشر. ومع ذلك ، فإن استخدام السجلات الحسابية 64 بت يتطلب تشغيل التطبيق ونظام التشغيل في وضع مؤشر 64 بت أيضًا.

  • لا يشير مباشرة إلى حجم ناقل العنوان الفعلي. على سبيل المثال ، يحتاج النظام الذي يحتوي على خطوط ذاكرة التخزين المؤقت بعرض 64 بت وحد أقصى 512 جيجابايت من الذاكرة إلى 33 بت فقط في ناقل العنوان الخاص به (أي log2(512*1024**3) - log2(64) = 33).

  • لا يشير إلى حجم ناقل البيانات الفعلي: يرتبط هذا أكثر بتكاليف التصنيع (عدد المسامير في مقبس وحدة المعالجة المركزية) وأحجام خطوط ذاكرة التخزين المؤقت.

261
Mr Fooz

في الأساس يمكنك أن تفعل كل شيء على نطاق أوسع:

  1. ذاكرة الوصول العشوائي لكل نظام تشغيل: RAM حدًا قدره 4 جيجابايت على x86 لنظام التشغيل (معظم الوقت)
  2. ذاكرة الوصول العشوائي لكل عملية: RAM الحد من 4GB على x86 للعمليات (دائما). إذا كنت تعتقد أن هذا غير مهم ، فحاول تشغيل تطبيق مكثف لقاعدة بيانات MSSQL. سوف يستخدم أكثر من 4 جيجابايت إذا توفرت لديك وتشغيل أفضل بكثير.
  3. العناوين: العناوين هي 64 بت بدلاً من 32 بت مما يتيح لك امتلاك برامج "أكبر" تستخدم ذاكرة أكبر.
  4. المقابض المتاحة للبرامج: يمكنك إنشاء المزيد من مقابض الملفات ، والعمليات ، ... مثال على Windows x64 ، يمكنك إنشاء> 2000 موضوع لكل عملية ، ولكن على x86 أقرب إلى بضع مئات .
  5. تتوفر برامج أوسع: من x64 ، يمكنك تشغيل كل من برامج x86 و x64. (مثال windows: wow64 ، windows32 على windows64 مضاهاة)
  6. خيارات المحاكاة: من x64 ، يمكنك تشغيل كل من x86 و x64 VMs.
  7. أسرع: بعض العمليات الحسابية أسرع على وحدة المعالجة المركزية 64 بت
  8. تقسيم موارد النظام المتعددة: الكثير من RAM الذاكرة مهمة للغاية عندما تريد تشغيل واحد على الأقل VM الذي يقسم موارد النظام.
  9. البرامج الحصرية المتاحة: العديد من البرامج الجديدة تدعم فقط x64. مثال تبادل 2007.
  10. المستقبل x86 القديم؟: مع مرور الوقت ، سيتم استخدام 64 بت أكثر وأكثر ولن يتم استخدام x86 أكثر. لذلك سوف تدعم البائعين فقط 64 بت أكثر وأكثر.

النوعان الكبيران من بنيات 64 بت هما x64 و IA64. لكن x64 هو الأكثر شعبية إلى حد بعيد.

يمكن تشغيل x64 أوامر x86 وكذلك أوامر x64. يدير IA64 أوامر x86 أيضًا ، لكنه لا يعمل SSE الامتدادات. هناك أجهزة مخصصة على Itanium لتشغيل تعليمات x86 ؛ انها محاكي ، ولكن في الأجهزة.

كما ذكرPhil ، يمكنك الحصول على نظرة أعمق لـ كيف تعمل هنا .

106
Brian R. Bondy

أكبر تأثير يلاحظه الأشخاص في الوقت الحالي هو أن الكمبيوتر الشخصي الذي يبلغ سعته 32 بت يمكنه فقط معالجة 4 جيجابايت بحد أقصى من الذاكرة. عند خلع الذاكرة المخصصة للاستخدامات الأخرى من قبل نظام التشغيل ، فمن المحتمل ألا يعرض الكمبيوتر الخاص بك سوى حوالي 3.25 جيجابايت من الذاكرة القابلة للاستخدام. الانتقال إلى 64 بت ويختفي هذا الحد.

إذا كان لديك تطور جدي ، فإن هذا قد يكون مهمًا جدًا. حاول تشغيل العديد من الأجهزة الظاهرية وسرعان ما نفدت الذاكرة. من المرجح أن تحتاج الخوادم إلى ذاكرة إضافية وبالتالي ستجد أن استخدام 64 بت أكبر بكثير على الخوادم من أجهزة الكمبيوتر المكتبية. يضمن قانون مور أنه سيكون لدينا المزيد من الذاكرة على الأجهزة ، وبالتالي في بعض الأوقات ، ستنتقل أجهزة الكمبيوتر المكتبية أيضًا إلى 64 بت كمعيار.

للحصول على وصف أكثر تفصيلاً عن اختلافات المعالج ، راجع هذه المقالة الممتازة من ArsTechnica .

46
Phil Wright

لا شيء مجاني: على الرغم من أن تطبيقات 64 بت يمكنها الوصول إلى ذاكرة أكثر من التطبيقات ذات 32 بت ، إلا أن الجانب السلبي هو أنها ) تحتاج المزيد من الذاكرة. كل تلك المؤشرات التي كانت في حاجة إلى 4 بايت ، والآن تحتاج إلى 8. على سبيل المثال ، الشرط الافتراضي في Emacs هو 60 ٪ ذاكرة أكبر عند تصميمه لهندسة 64 بت. تؤثر هذه المساحة الإضافية على الأداء في كل مستوى من مستويات التسلسل الهرمي للذاكرة: تستغرق الملفات التنفيذية الأكبر وقتًا أطول للتحميل من القرص ، وتسبب مجموعات العمل الأكبر حجمًا أكبر من الاستدعاء ، بينما تعني الكائنات الأكبر حجمًا أقل في ذاكرة التخزين المؤقت للمعالج. إذا كنت تفكر في وحدة المعالجة المركزية ذات ذاكرة التخزين المؤقت 16 كيلو بايت L1 ، فيمكن أن يعمل التطبيق 32 بت مع 4096 مؤشرًا قبل أن يفوتها ويذهب إلى ذاكرة التخزين المؤقت L2 ولكن يجب أن يصل تطبيق 64 بت إلى ذاكرة التخزين المؤقت L2 بعد 2048 مؤشرًا فقط.

في x64 ، يتم تخفيف ذلك عن طريق التحسينات المعمارية الأخرى مثل المزيد من السجلات ، ولكن في PowerPC إذا كان التطبيق الخاص بك لا يمكنه استخدام> 4G فمن المحتمل أن يعمل بشكل أسرع على "ppc" بدلاً من "ppc64". حتى على Intel ، توجد أعباء عمل يتم تشغيلها بشكل أسرع على x86 ، والقليل منها يعمل بأكثر من 5٪ أسرع على x64 من x86.

31
James

يمكن لنظام التشغيل 64 بت استخدام المزيد من ذاكرة الوصول العشوائي. هذا عن ذلك ، في الممارسة العملية. يستخدم الإصدار 64 بت من نظام التشغيل Vista/7 ميزات أمان مربي الحيوانات حيث يضعون مكونات حيوية في ذاكرة الوصول العشوائي ، ولكن هذا ليس "ملحوظًا" على هذا النحو.

من كريس إدمونتون:

يمكن لنظام التشغيل 32 بت على نظام ix86 مع PAE معالجة ما يصل إلى 64 جيجابايت من ذاكرة الوصول العشوائي. يمكن لنظام التشغيل 64 بت على x86-64 الوصول إلى ما يصل إلى 256 TB من مساحة العنوان الافتراضية ، على الرغم من أن هذا قد يثار في المعالجات اللاحقة ، وحتى 16 EB. لاحظ أن بعض أنظمة التشغيل تحد من مساحة العنوان بشكل أكبر ، وسيكون لمعظم اللوحات الأم قيود إضافية.

19
Phoshi

لست متأكدًا من أنني أستطيع الإجابة على جميع أسئلتك دون كتابة مقال كامل (هناك دائمًا Google ...) ، لكنك لست بحاجة إلى تصميم تطبيقاتك بطريقة مختلفة عن 64 بت. أعتقد أن ما يشار إليه هو أن عليك أن تضع في اعتبارها أشياء مثل أحجام المؤشر لم تعد بنفس حجم الأحجام. ولديك مجموعة كاملة من المشاكل المحتملة مع افتراضات يحمل في ثناياه عوامل على أنواع معينة من البيانات التي يبلغ طولها أربعة بايت والتي قد لم تعد صحيحة.

من المحتمل أن يؤدي ذلك إلى رفع جميع أنواع الأشياء في التطبيق الخاص بك - كل شيء بدءًا من الحفظ/التحميل من الملف ، والتكرار من خلال البيانات ، ومحاذاة البيانات ، وصولًا إلى عمليات bitwise على البيانات. إذا كان لديك قاعدة بيانات موجودة لديك تحاول نقلها ، أو تعمل على كليهما ، فمن المحتمل أن يكون لديك الكثير من الأشياء القليلة التي يمكنك العمل بها.

أعتقد أن هذه مشكلة في التنفيذ ، وليست مشكلة في التصميم. أي. أعتقد أن "تصميم" القول ، حزمة تحرير الصور ستكون هي نفسها مهما كانت الكلمات. نكتب التعليمات البرمجية التي تجمع بين كلا الإصدارين 32 بت و 64 بت ، وبالتأكيد لا يختلف التصميم بين الاثنين - إنه نفس كود الشفرة.

تتمثل "الصفقة الكبيرة" الأساسية على 64 بت في أنه يمكنك الوصول إلى مساحة عنوان ذاكرة أكبر بكثير من 32 بت. هذا يعني أنه يمكنك حقًا تخزين أكثر من 4 جيغابايت من الذاكرة في جهاز الكمبيوتر الخاص بك وجعلها تحدث فرقًا بالفعل.

أنا متأكد من أن الإجابات الأخرى سوف تدخل في التفاصيل والفوائد أكثر من I.

فيما يتعلق باكتشاف الفرق ، عندئذٍ ما عليك سوى التحقق من حجم المؤشر (على سبيل المثال ، sizeof (void *)). الإجابة من 4 تعني 32 بت ، و 8 تعني أنك تعمل في بيئة 64 بت.

14
Greg Whitfield

تحتوي عملية 32 بت على مساحة عناوين افتراضية تبلغ 4 جيجابايت ؛ قد يكون هذا قليلًا جدًا بالنسبة لبعض التطبيقات. يحتوي تطبيق 64 بت على مساحة عنوان غير محدودة تقريبًا (بالطبع ، إنه محدود ، لكنك على الأرجح لن تصل إلى هذا الحد).

على OSX هناك مزايا أخرى. راجع المقالة التالية ، لماذا تشغيل kernel في مساحة عنوان 64 بت (بغض النظر عما إذا كان تطبيقك يعمل 64 أو 32) أو أن يكون تطبيقك يعمل في 64 مساحة عنوان البت (بينما لا تزال النواة 32 بت) تؤدي إلى أداء أفضل بكثير. لتلخيص: إذا كان أحدهما 64 بت (kernel أو التطبيق ، أو كليهما بالطبع) ، فلن يتم مسح TLB ("buffer lookaside buffer") كلما قمت بالتبديل من kernel إلى استخدام المساحة والعودة (والتي ستسرع يصل RAM وصول).

لديك أيضًا مكاسب في الأداء عند العمل مع متغيرات "long long int" (متغيرات 64 بت مثل uint64_t). يمكن لوحدة المعالجة المركزية 32 بت إضافة/تقسيم/طرح/ضرب قيمتي 64 بت ، ولكن ليس في عملية تشغيل جهاز واحد. بدلاً من ذلك ، يجب تقسيم هذه العملية إلى عمليتين 32 بت (أو أكثر). لذلك فإن التطبيق الذي يعمل بشكل كبير مع أرقام 64 بت سوف يحصل على سرعة زيادة القدرة على أداء الرياضيات 64 بت مباشرة في الأجهزة.

أخيرًا وليس آخرًا ، توفر بنية x86-64 سجلات أكثر من بنيات x86 الكلاسيكية. يكون العمل مع السجلات أسرع بكثير من العمل مع RAM وكلما زاد عدد السجلات التي تحتوي عليها وحدة المعالجة المركزية ، كلما احتاجت في كثير من الأحيان إلى تبديل قيم التسجيل إلى RAM والعودة إلى السجلات.

لمعرفة ما إذا كان يمكن تشغيل وحدة المعالجة المركزية الخاصة بك في وضع 64 بت ، يمكنك النظر في العديد من المتغيرات sysctl. مثلا فتح محطة ونوع

sysctl machdep.cpu.extfeatures

إذا كان يسرد EM64T ، تدعم وحدة المعالجة المركزية الخاصة بك مساحة عنوان 64 بت وفقًا لمعيار x86-64. يمكنك أيضا البحث عن

sysctl hw.optional.x86_64

إذا كانت تشير إلى 1 (صواب/ممكّن) ، فإن وحدة المعالجة المركزية لديك تدعم وضع x86-64 بت ، وإذا كانت تشير إلى 0 (خطأ/معطل) ، فهذا لا ينطبق. إذا لم يتم العثور على الإعداد على الإطلاق ، فاعتبر ذلك خطأ.

ملاحظة: يمكنك أيضًا إحضار متغيرات sysctl من داخل تطبيق C أصلي ، دون الحاجة لاستخدام أداة سطر الأوامر. نرى

man 3 sysctl
10
Mecki

لاحظ أنه يمكن استخدام مساحة العنوان لأكثر من ذاكرة (حقيقية). يمكن للمرء أيضًا تعيين خريطة للملفات الكبيرة ، والتي يمكن أن تحسن الأداء في أنماط وصول أكثر فرديًا لأن التخزين المؤقت على مستوى الكتلة الأكثر قوة وفعالية VM يبدأ تشغيله. كما أنه أكثر أمانًا تخصيص كتل ذاكرة كبيرة على 64- بعض الشيء نظرًا لأن احتمال حدوث تصادم في مساحة العنوان أقل احتمالًا في مواجهة تجزئة مساحة العنوان التي لن تسمح لها بتخصيص كتلة كبيرة.

تنطبق بعض الأشياء المذكورة في هذا الموضوع (مثل مضاعفة # سجلات) فقط على x86-> x86_64 ، وليس على 64 بت بشكل عام. تماما مثل حقيقة أنه تحت x86_64 واحد مضمون لديه SSE2 ، 686 شفرة ضوئية وطريقة رخيصة للقيام الموافقة المسبقة عن علم. لا تقتصر هذه الميزات على إصدار 64 بت ، بل تتعلق بالحد من الإرث ومعالجة قيود x86 المعروفة

علاوة على ذلك ، يشير الأشخاص في كثير من الأحيان إلى مضاعفة السجلات كسبب للتسريع ، بينما من الأرجح أن استخدام SSE2 الافتراضي هو الذي يقوم بالخدعة (تسارع memcpy والوظائف المماثلة). إذا قمت بتمكين نفس المجموعة على x86 ، يكون الفرق أصغر. (*) (***)

ضع في اعتبارك أيضًا أنه غالبًا ما يتم فرض غرامة مبدئية لأن بنية البيانات المتوسطة ستزداد ببساطة لأن حجم المؤشر أكبر. يحتوي هذا أيضًا على تأثيرات ذاكرة التخزين المؤقت ، إلا أنه ملحوظ بشكل ملحوظ في أن متوسط ​​memcpy () (أو ما يعادله نسخة الذاكرة بلغتك) سيستغرق وقتًا أطول. هذا هو فقط في حجم بضعة في المئة من وزن الجسم ، ولكن السرعات المذكورة أعلاه هي أيضا في هذا الحجم.

عادةً ما تكون المحاذاة العامة أكبر أيضًا في تصميمات 64 بت (السجلات السابقة 32 بت غالبًا ما تصبح مزيجًا من قيم 32 بت و 64 بت) ، مما يؤدي إلى تفجير الهياكل بشكل أكبر.

بشكل عام ، تشير اختباراتي البسيطة إلى أنها ستقوم بإلغاء بعضها البعض تقريبًا ، إذا كانت برامج التشغيل ومكتبات وقت التشغيل قد تم تكييفها بشكل كامل ، دون أي فرق كبير في سرعة التطبيق العادي. ومع ذلك ، يمكن أن تصبح بعض التطبيقات أسرع بشكل مفاجئ (على سبيل المثال ، عند الاعتماد على AES) أو أبطأ (يتم نقل بنية البيانات الحيوية بشكل مستمر حولها/مسحها/المشي فيها وتحتوي على الكثير من المؤشرات). كانت الاختبارات على نظام التشغيل Windows ، وبالتالي لم يتم تقييم معيار الموافقة المسبقة عن علم.

لاحظ أن معظم لغات JIT-VM (Java ، .NET) تستخدم مؤشرات أكثر بكثير في المتوسط ​​(داخليًا) من على سبيل المثال C++. من المحتمل أن يزيد استخدام ذاكرتهم أكثر من البرنامج العادي ، لكنني لا أجرؤ على مساواة ذلك مباشرة بالآثار البطيئة (نظرًا لأن هذه الوحوش معقدة حقًا وغير تقليدية وغالبًا ما يصعب التنبؤ بها دون قياس)

يقوم Windows 64-bit افتراضيًا باستخدام SSE2 للنقطة العائمة والذي يبدو أنه يسرع العمليات البسيطة ويبطئ العمليات المعقدة (sin ، cos وغيرها).

(*) حقيقة معروفة هي أن عدد SSE السجلات يتضاعف أيضًا في وضع 64 بت

(**) كان لدى الدكتور دوبس مقال لطيف عنه قبل بضع سنوات.

9
Marco van de Voort

إلى جانب المسائل المتعلقة بمساحة الذاكرة الواضحة التي ذكرها معظم الناس هنا ، أعتقد أنه يجدر النظر إلى فكرة "الحوسبة العريضة" التي تحدث عنها Knuth (من بين آخرين) مؤخرًا. هناك الكثير من الكفاءات التي يمكن الحصول عليها من خلال معالجة البت ، والعمليات bitwise على Word 64 بت تذهب أبعد من ذلك بكثير على Word 32 بت. باختصار ، يمكنك القيام بمزيد من العمليات في السجلات دون الحاجة إلى الوصول إلى الذاكرة ، ومن منظور الأداء هذا فوز كبير للغاية.

ألق نظرة على المجلد 4 ، ما قبل Fascicle 1A للحصول على بعض الأمثلة عن الحيل الرائعة التي أتحدث عنها.

8
Michael Dorfman

وبصرف النظر عن القدرة على معالجة المزيد من الذاكرة ، فإن x86_64 لديها أيضًا المزيد من السجلات التي تسمح للمترجم بإنشاء كود أكثر فعالية. عادة ما يكون تحسين الأداء صغيرًا إلى حد ما.

بنية x86_64 متوافقة مع الإصدارات السابقة مع x86. من الممكن تشغيل أنظمة تشغيل 32 بت غير معدلة. من الممكن أيضًا تشغيل برنامج 32 بت غير معدّل من نظام تشغيل 64 بت. سيتطلب ذلك كافة المكتبات ذات 32 بت المعتادة. قد تحتاج إلى تثبيت بشكل منفصل.

7
Kristof Provost

هذا الموضوع طويل جدًا بالفعل ، لكن ...

تركز معظم الردود على حقيقة أن لديك مساحة عنوان أكبر 64 بت ، بحيث يمكنك معالجة المزيد من الذاكرة. لحوالي 99 ٪ من جميع التطبيقات ، وهذا غير مهم تماما. نعيق كبير.

السبب الحقيقي السبب في أن 64 بت هو جيد لا أن السجلات هي أكبر ، ولكن هناك ضعف عددهم! هذا يعني أن المترجم يمكنه الاحتفاظ بمزيد من قيمك في السجل بدلاً من سكبها على الذاكرة وتحميلها مرة أخرى بعد قليل من الإرشادات. إذا وعندما يقوم برنامج التحويل البرمجي المحسن بإلغاء تشغيل الحلقات الخاصة بك نيابة عنك ، فيمكنه إزالتها مرتين تقريبًا ، مما يمكن أن يساعد في الأداء.

أيضًا ، تم تعريف اصطلاحات المتصل/المستعرض الفرعي لـ 64 بت للاحتفاظ بمعظم المعلمات التي تم تمريرها في السجلات بدلاً من أن يقوم المتصل بدفعها إلى المكدس ثم إيقاف تشغيلها.

لذلك سيحصل تطبيق C/C++ "نموذجي" على تحسين أداء بنسبة 10٪ أو 15٪ فقط عن طريق إعادة ترجمة الإصدار 64 بت. (بافتراض أن جزءًا من التطبيق كان ملتزمًا بالحساب. بالطبع ، هذا ليس مضمونًا ؛ جميع أجهزة الكمبيوتر تنتظر بالسرعة نفسها. قد يتغير الأميال لديك.)

6
Die in Sente

الاقتباس من Microsoft.com:

في الجدول التالي ، تتم مقارنة الموارد القصوى المتزايدة لأجهزة الكمبيوتر التي تستند إلى إصدارات 64 بت من Windows ومعالج Intel 64 بت مع الحد الأقصى للموارد الموجودة 32 بت.

MS-Table

5
Mehper C. Palavuzlar

مع جهاز 32 بت لديك فقط 4،294،967،29 بايت من الذاكرة لمعالجة. مع جهاز 64 بت لديك 1.84467441 × 10 ^ 19 بايت من الذاكرة.

ويكيبيديا تقول هذا

تقوم المعالجات 64 بت بحساب مهام معينة (مثل العوامل من الشخصيات الكبيرة) مرتين أسرع من العمل في بيئات 32 بت (يتم الحصول على مثال معين من المقارنة بين حاسبة Windows 32 بت و 64 بت ؛ ملحوظة للعامل من 100000 يقول ). هذا يعطي شعور عام بالإمكانيات النظرية للتطبيقات المحسّنة 64 بت.

بينما تجعل بنيات 64 بت العمل بلا منازع مع مجموعات البيانات الكبيرة في تطبيقات مثل الفيديو الرقمي والحوسبة العلمية وقواعد البيانات الكبيرة أسهل ، كان هناك جدل كبير حول ما إذا كانت هذه أو أوضاع التوافق 32 بت الخاصة بهم ستكون أسرع من الأسعار المماثلة أنظمة 32 بت للمهام الأخرى. في العمارة x86-64 (AMD64) ، فإن غالبية أنظمة التشغيل والتطبيقات 32 بت قادرة على العمل بسلاسة على الأجهزة 64 بت.

أجهزة Java الافتراضية من Sun 64 بت أبطأ في بدء التشغيل من الأجهزة الظاهرية 32 بت لأن Sun قد نفذت فقط "مترجم JIT" (C2) لأنظمة 64 بت. [9] برنامج التحويل البرمجي JIT "العميل" (C1) ، والذي ينتج تعليمات برمجية أقل فاعلية ولكن التحويل البرمجي أسرع بكثير ، غير متوفر على الأنظمة الأساسية 64 بت.

تجدر الإشارة إلى أن السرعة ليست هي العامل الوحيد الذي يجب مراعاته عند مقارنة معالجات 32 بت و 64 بت. قد تكون التطبيقات مثل المهام المتعددة واختبار الضغط والتجميع (للحوسبة عالية الأداء) ، HPC ، أكثر ملاءمة لهندسة 64 بت بالنظر إلى النشر الصحيح. تم نشر مجموعات 64 بت على نطاق واسع في المؤسسات الكبيرة مثل IBM و HP و Microsoft ، لهذا السبب.

5
Mark Cidade

بصرف النظر عن المزايا التي سبق ذكرها فيما يلي بعض الأمور المتعلقة بالأمان:

  • x86_64 cpus لديك بت عدم التنفيذ في جداول صفحاتهم. أي. هذا يمكن أن يمنع secruity يستغل سبب تجاوزات المخزن المؤقت. تدعم 32 بت x 86 cpus هذه الميزة فقط في وضع PAE.
  • أكبر مساحة عنوان يسمح العشوائية تخطيط مساحة العنوان (ASLR) مما يجعل استغلال تجاوزات المخزن المؤقت أكثر صعوبة.
  • x86_64 cpus تتضمن رمزًا مستقلًا عن الموضع ، أي الوصول إلى البيانات نسبة إلى سجل مؤشر التعليمات (RIP).

ميزة أخرى تتبادر إلى الذهن هي أن كمية الذاكرة المتجاورة الافتراضية المخصصة مع vmalloc() في نواة Linux يمكن أن تكون أكبر في وضع 64 بت.

5
knweiss

صرح كل من كريستوف وبوشي عن الاختلافات التقنية الرئيسية بين نظامي التشغيل 32 و 64 بت ، حيث تختلف تجربة المستخدم كثيرًا عن النظرية. تحتوي إصدارات مستهلك 64 بت من Windows حتى الآن (XP و Vista) على فجوات كبيرة في دعم برامج التشغيل الخاصة بها. لقد كان لدي الكثير من الطابعات والماسحات الضوئية والأجهزة الخارجية الأخرى التي لا تعمل بإصدارات 64 بت التي تعمل بشكل جيد مع إصدارات 32 بت. هذه هي الأجهزة التي تحتوي على برامج تشغيل 64 بت ولا تزال لا تعمل. في هذه المرحلة ، أوصي بأن تبتعد عن أي مستهلك يستند إلى 64 بت من Microsoft حتى تسمع عن كيفية تعامل Windows 7 مع هذا ، من المستخدمين النهائيين الحقيقيين ، وليس فقط المهووسين بالبرمجيات الذين لديهم إمكانية الوصول إليه حاليًا. اعطها 6 أشهر على الأقل وشاهد ما يعاني منه الأشخاص. أنا شخصياً سأقوم بتثبيت نكهة 32 بت من Windows 7 لأن إصدارات 64 بت من نظام التشغيل Vista عبارة عن وزن ورقي باهظ التكلفة توقفت عن استخدامه منذ عدة أيام وعادت إلى XP 32 بت.

4
Kevin K

تستخدم بعض برامج تشغيل اللعبة تمثيلًا بت لوحة . على سبيل المثال ، تحتوي لعبة الشطرنج والداما وأوتشيلو على لوحة 8 × 8 ، أي 64 مربعًا ، لذا فإن وجود 64 بت على الأقل في الجهاز يساعد Word بشكل كبير في الأداء.

أتذكر أنني قرأت عن برنامج للشطرنج الذي كان بنيته 64 بت ضعف سرعة الإصدار 32 بت تقريبًا.

2
Hugh Allen

يشير المصطلح 32 بت و 64 بت إلى الطريقة التي يعالج بها معالج الكمبيوتر (وتسمى أيضًا وحدة المعالجة المركزية). تقوم إصدارات 64 بت من Windows بمعالجة كميات كبيرة من ذاكرة الوصول العشوائي (RAM) بشكل أكثر فعالية من أنظمة 32 بت.

قد تكون السرعة مختلفة في رأيي

2
LestiWulan

بالنسبة للأغراض العملية ، ربما لن تلاحظ فرقًا.

يجب أن يكون لديك وحدة المعالجة المركزية 64 بت (معظم وحدات المعالجة المركزية في السنوات القليلة الماضية) لتثبيت نظام التشغيل 64 بت.

هناك بعض المزايا لنظام التشغيل 64 بت:

  • سيتيح لك تشغيل أكثر من 4 جيجابايت من RAM (الحد الأقصى لعدد العناوين في نظام التشغيل 32 بت هو 2 ^ 32 = 4GB)
  • من المفيد العمل مع مجموعات البيانات الكبيرة (على سبيل المثال في Excel) وبعض المهام المكثفة حسابيًا (مثل Photoshop والملفات الكبيرة)
  • يمكنك فقط تشغيل برنامج 64 بت على نظام تشغيل 64 بت ، ولكن يمكنك تشغيل برنامج 32 بت على كليهما (ضع في اعتبارك أن الكثير من البرامج تأتي على حد سواء ، لذلك لا يوجد الكثير من 64 بت فقط برامج).

في معظم السيناريوهات ، تستخدم برامج 64 بت ذاكرة أكبر قليلاً ، لكن بالنسبة لجهاز الكمبيوتر الشخصي ، لا يلاحظ ذلك عادةً.

1
cyberx86

هناك نقطة أخرى في هذا الصدد فيما يتعلق بـ Microsoft Windows وهي أنه منذ سنوات عديدة كان هناك Win32 API والذي تم تصميمه لأنظمة تشغيل 32 بت ولم يتم تحسينه لتجميع 64 بت. عندما أكتب بعض ملفات DLL للتطبيقات الخاصة بي ، أجمعها بشكل عام في Win32 وهي ليست الإصدار 64 بت من الأشياء. قبل نظام التشغيل Vista ، لم يكن هناك العديد من إصدارات Windows 64 الناجحة التي أعتقد أنها تعمل فيها ، حيث إن جهازي الجديد يحتوي على 4 غيغابايت من RAM لكنني ما زلت أستخدم Windows 32 بت XP Pro كما هو معروف O/S مستقرة بالنسبة إلى XP64 أو Vista.

أعتقد أنك قد ترغب أيضًا في الرجوع إلى الوراء عندما كان هناك تحول من 16 بت إلى 32 بت للحصول على مزيد من التفاصيل حول سبب تحول هذا التغيير إلى حد كبير بالنسبة لبعض الأشخاص. التطبيقات المهمة للمهمة التي قد تعملها الشركة على سطح المكتب ، على سبيل المثال الحزم المحاسبية الصغيرة ، قد لا تعمل على نظام تشغيل 64 بت ، وبالتالي هناك حاجة للحفاظ على آلة قديمة حولها ، افتراضية أو حقيقية.

يمكن أن يؤدي تغيير حجم العنوان إلى بعض التداعيات والانعكاسات الكبيرة.

1
JB King