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


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

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

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


219
2017-10-17 11:14


الأصل


هناك العديد من التشويش هنا ، وأيضًا حيث على الويب ، بين العنونة المادية (الوصول إلى ذاكرة الوصول العشوائي) يؤثر PEA على ذلك ، وتؤثر اللوحة الأم على ذلك ، والعنوان المنطقي (الذاكرة الظاهرية لكل عملية). في نظام التشغيل 32 بت ، تقتصر الذاكرة الظاهرية على 4 غيغابايت مطروحًا منها ما تحتفظ به النواة. وهو مستقل عن ذاكرة الوصول العشوائي (RAM) ، فيمكن أن يكون لديك ذاكرة وصول عشوائي سعتها 0.1 ميغابايت أو 8 غيغابايت ، وسيكون لديك ذاكرة افتراضية بسعة 4 جيجابايت بالضبط (لكن بعضها محجوز بواسطة النواة). يمكن استخدام PEA للحصول على المزيد من ذاكرة الوصول العشوائي ، ولكنها ليست إجابة مثالية لأن النواة لا يمكنها الوصول إلى كل شيء. - ctrl-alt-delor


الأجوبة:


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


262
2017-10-17 13:11



إجابة جيدة جدا. خاصة لأنك لاحظت أنه لا يوجد في الواقع الحد من ذاكرة الوصول العشوائي 4GB ، ولكن الحد من استخدام الذاكرة العملية. فقط لمعلوماتك ، أعتقد أنه يجب عليك إلقاء نظرة على هذا الرابط: unawave.de/windows-7-tipps/32-bit-ram-barrier.html؟lang=EN - Breakthrough
وهي تطبيقات لا تعمل على نوافذ 64 بت: تطبيقات 16 بت / تلك التي تستخدم برامج تشغيل وضع kernel 32 بت أو غير الموقعة. هذا كثير لبرامج المدمن مثلي ... - fluxtendu
flextendu ، نظراً لمتطلبات أداء تلك البرامج القديمة ، يمكنك تقريباً تشغيلها في جهاز ظاهري. مع مشغل VMware ، Virtual PC و Virtual Box هناك ، لا يوجد سبب لعدم تجربة واحد منهم ، إذا كان لديك ترخيص Windows 32 بت spere. إذا كنت لا ترغب في الفوضى بذلك ، فمن المحتمل أنها ستعمل تحت "Windows XP Mode" أيضًا. - Mark Booth
BTW ، لن تستخدم تطبيقات 32 بت أكثر من 2 غيغا بايت من ذاكرة الوصول العشوائي إلا إذا تم تمكين علامة محددة في بيانها. مصدر: blogs.technet.com/b/markrussinovich/archive/2008/11/17/... - Hello71
نعم ، أنا متأكد من أن Hello71 قد وصلت إلى شيء مهم جدًا لم يتم تغطيته هنا: لن تستفيد معظم تطبيقات 32 بت مباشرةً من ذاكرة الوصول العشوائي الإضافية. أعتقد أن هذا يستحق الذكر ، أليس كذلك؟ - Django Reinhardt


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

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

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

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

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


107
2017-09-25 12:19



أم. يدير IA64 أوامر x86. لا يفعل ملحقات SSE ، على الرغم من. هناك أجهزة مخصصة على Itanium لتشغيل تعليمات x 86؛ انها محاكي ، ولكن في الأجهزة. - tzot
قبل بضع سنوات ، نشر ريموند تشن عن "حدود" عام 2000 ، وهو أكثر أو أقل أسطورة حضرية: blogs.msdn.com/oldnewthing/archive/2005/07/29/444912.aspx - bk1e
Upvote ل Arstechnica لشرحهم. - Avihu Turzion
الحد من ذاكرة الوصول العشوائي من 4GB ليس صحيحا تماما (بل هو الحد المصطنع وضعت على أنظمة التشغيل Windows المستخدمين المنزليين) ، تحقق PAE. باستخدام أحدث الأجهزة ، يمكن لنواة PAE في Linux (والتي يتم استخدامها بشكل افتراضي لـ 32 بت) معالجة أكثر من 4 جيجابايت على ما يرام. وينطبق الشيء نفسه على FreeBSD و NetBSD. - Izzy
لا تستطيع أنظمة 32bit استخدام أكثر من 4 جيجابايت (النقطة الأولى) بسبب "العناوين" (النقطة الثالثة). لأن أعلى رقم 32 بت هو 4.294.967.296 (= 4 جيجابايت). لذا ، فإن النقطتين الأولى والثانية هما نفس SAME. يمكنك إزالة النقطة الثالثة. :) - Jet


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

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

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


46
2017-09-25 12:16



النظام الأساسي 32 بت والحد من 4 جيجابايت هو إلى حد ما تسمية خاطئة وهو (أساسًا) حد اختيار / تصميم نظام التشغيل المعماري. حقا ، هو حقا 4GB من 32 بت في الحد في مساحة VA عملية. يعتمد العنوان الفعلي على 36 بت على وحدة المعالجة المركزية Intel 32 بت - Tall Jeff
قمت بعمل نقطة جيدة وهذا صحيح بالتأكيد. ولكن التأثير في العالم الحقيقي لمستخدمي الكمبيوتر الشخصي هو أن الجهاز لن يستخدم 4 جيجابايت كاملة دفعوا مقابلها. كان والدي يعاني من هذه المشكلة وما زال مرتبكًا من أن 4 غيغابايت التي دفعها لا يمكن استخدامها بالكامل.
نقدر وجهة نظرك ، ولكن مجرد محاولة لدفع فكرة أن الإصلاح ليس في المعالج أو الذهاب إلى 64 بت ، بل هو مجرد مسألة تصميم نظام التشغيل محسنة بشكل طفيف. يتم تناول ذلك ، على سبيل المثال ، على إصدارات المؤسسات من Windows حتى في الإصدارات 32 بت. انها تسمح ل 64 جيجابايت من ذاكرة الوصول العشوائي. - Tall Jeff
من الناحية الفنية ، لا يختفي الحد. إنه يتحرك إلى حيث أنه من غير العملي / من المستحيل تثبيت ذاكرة الوصول العشوائي هذه على الجهاز في أي وقت في العقد القادم أو نحو ذلك.
انظر ملاحظتي على PAE أعلاه: الحد 4 غيغابايت ليس صحيحًا للنظام بأكمله - ولكنه ينطبق فقط على العمليات الفردية (لا يمكن لأي عملية الوصول إلى 4 غيغابايت وما يصل إلى نفسه - ولكن يمكن للنظام بأكمله ، بمعنى جميع العمليات معًا ، تمكين PAE). لذا ، ما لم يكن لدى أحد التطبيقات التي تستفيد من إمكانية الوصول إلى 4 جيجابايت وما فوق (مثل محرري الفيديو / المحولات مع ملفات الفيديو الكبيرة) و 8GB + تثبيت ، لا ينبغي أن يكون هناك فرق كبير سواء باستخدام 32bit أو 64bit. - Izzy


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

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


31
2017-10-13 10:45



تقترح هذه الإجابة أن PowerPC64 ليست جيدة مثل x86-64. والحقيقة هي أن powerpc64 لم يحسن powerpc ، كما لم يتم كسر powerpc. - ctrl-alt-delor
يحتوي Linux الآن على ABI x32 ، مع جميع مزايا السرعة x86-64 (المزيد من التسجيلات ، إعادة تصميم ABI) ، ولكن مع مؤشرات 32 بت. +1 للإشارة إلى أن فوائد وضع 64bit ليست من زيادة العرض الفعلية ، ولكن من فرصة إسقاط الكثير من الأمتعة التي كانت تحتفظ بالعمارة. قيمة 64bit regs لبعض التطبيقات ، ولكن مساحة المؤشر 64 بت هي أقل حاجة في كثير من الأحيان. - Peter Cordes


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

من ChrisInEdmonton:

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


19
2017-10-17 11:24



بالنسبة لنظام التشغيل ، يشير 32 بت مقابل 64 بت فقط إلى حجم المؤشرات (ما تناقشه الفقرة الأولى بشكل صحيح). -1: تختار بعض أنظمة تشغيل تأمين الحجم الصحيح الافتراضي لحجم المؤشر ، ولكن لا يقوم Windows ولا Linux بذلك. دقة حساب عدد صحيح لم تتغير. لا يقوم نظام التشغيل المستخدم على نطاق واسع بتغيير دقة النقطة العائمة (ما تدعيه الفقرة الثانية). "عائم" أو "مفرد" هو 32 بت ، "مزدوج" هو 64 بت ، بغض النظر عن ما إذا كان نظام التشغيل يستخدم مؤشرات 32 بت أو 64 بت. - Mr Fooz
آه ، كنت مخطئا بشكل واضح ، شكرا لتوضيح ذلك :) - Phoshi
ليس هناك أى مشكلة. -1 -> +1 - Mr Fooz
قد يكون من المفيد تحرير إجابتك لتحديد عدد ذاكرة الوصول العشوائي التي يمكن الوصول إليها. يمكن لنظام التشغيل 32 بت على نظام ix86 مع PAE معالجة ذاكرة وصول عشوائي تصل إلى 64 جيجابايت. يمكن لنظام تشغيل 64 بت على x86-64 الوصول إلى 256 تيرابايت من مساحة العنوان الظاهرية ، على الرغم من أنه قد يتم رفع هذا في المعالجات اللاحقة ، حتى 16 EB. لاحظ أن بعض أنظمة التشغيل تحد من مساحة العنوان بشكل أكبر ، وستحمل معظم اللوحات الرئيسية قيودًا إضافية. - ChrisInEdmonton
أردت أن أبقيه بسيطًا ، لأن الأرقام هي خاصة مرتفع بما يكفي ليكون غير ذي صلة في الوقت الحالي ، ولكن لا يمكن أن يضره الآن. - Phoshi


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

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

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

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

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

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


14
2017-09-25 12:29



إذا قمت بكتابة البرامج التي تفترض عرضا أن أنواع معينة من المؤشر هي بنفس حجم أنواع تكامل معينة ، فأنت تفعل ذلك. كان هذا صحيحًا منذ فترة طويلة. - David Thornley
@ ديفيد: أنت على حق تماما. لسوء الحظ ، هناك الكثير من التعليمات البرمجية التي تقوم بذلك بالضبط.


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

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

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

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

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

sysctl machdep.cpu.extfeatures

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

sysctl hw.optional.x86_64

إذا كانت تقول 1 (true / enabled) ، فإن وحدة المعالجة المركزية تدعم وضع x86-64 Bit ، إذا كانت تقول 0 (false / disabled) ، فهذا لا يعني. إذا لم يتم العثور على الإعداد على الإطلاق ، فكر في كونه غير صحيح.

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

man 3 sysctl

10
2017-09-25 12:34



الخطأ: "machdep.cpu.extfeatures" هو مفتاح غير معروف
أعتقد أنه لا يسمى EM64T ، أيضا ، إذا كنت غير مؤسف بما فيه الكفاية للحصول على انتل.