سؤال

أنا لست متأكدا من أنني أفهم بشكل صحيح:لا 64 بت نظام التشغيل تشغيل/ترجمة التعليمات البرمجية بشكل أسرع من 32 بت نظام التشغيل على نفس النظام ؟

نحن نستخدم 64 بت أنظمة أين أنا و يبدو أن تسبب مشاكل التوافق مع إرث البرمجيات الاحتكارية.(نحن تشغيل أوبونتو 9.04 طروب amd64)

هل كانت مفيدة؟

المحلول

وسأقتصر في هذا الجواب إلى x86-32 (IA-32) مقابل x86-64 (AMD64) ، كما أعتقد أن هذا هو السؤال الذي يسأل في الواقع.

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

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

على النوافذ الجانبية, MS اتخذت أنها فرصة لكسر مجموعة كاملة التاريخية compability المشاكل.ليس قطيعة من العالم القديم ، بل هي البداية.أنا لا أصدق لينكس يعاني من نفس المشاكل لتبدأ, و ليس لدي الكثير من منظور أن تقدم على 64 بت المزايا.

نصائح أخرى

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

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

هناك منطقة أخرى حيث في تطوير البرمجيات ، فمن المنطقي أن يذهب إلى 64-بت:تحتاج إلى تشغيل الكثير من VMs.تشغيل اثنين من VMs يمكن بسهولة ضربة كنت في الماضي 3 جيجابايت من الذاكرة حاجز من نظام التشغيل ، مما يجعل استخدامها مؤلمة جدا.(فإنه سيتم العمل بسبب تقنية تسمى PAE ، أو ترحيلها معالجة ملحقات أن إنتل اخترع لسد الفجوة بين أنظمة 32 بت و 64 بت أنظمة, ولكن النتيجة هي أليمة للعمل مع كمطور و لا معتمد على نظام التشغيل Windows.) الذهاب إلى نظام تشغيل 64 بت يمكن أن توفر منافع هائلة.

(كما المعلقين ملاحظة هذا الجواب هو عام إلى حد ما ، بعض من هذه النقاط لا تنطبق على intel/amd رقائق.)

الجواب هو:فإنه يختلف ، لعدة أسباب:

  • مع أكبر عرض التعليمات ، وأنت تسير في الحصول على المزيد من التعبير (إما أكبر مجموعة متنوعة من تعليمات أو قدرة أكبر على ترميز البيانات في هذه التعليمات مباشرة) ، مما يعني انخفاض عدد التعليمات التي تتدفق من خلال آلة, وهو عموما الفوز:لذا ++64bit هنا.

  • ولكن في بعض الأحيان أكبر تعليمات قد اتخاذ المزيد من دورات لفك وتنفيذ لأنها قد تكون أكثر تعقيدا.لذلك ممكن --64bit هنا.

  • كما تحتاج إلى نقل هذه التعليمات من وإلى وحدة المعالجة المركزية:64 بت تعليمات ضعف حجم 32 بت تعليمات ، مما يعني المزيد من حركة المرور من و إلى الذاكرة و مخابئ.وحدات المعالجة المركزية هي منظم لتحسين الكثير من هذه التكلفة ، ولكنه طفيف --64bit هنا.

  • المزيد من السجلات عادة ما تكون متاحة في نطاق أوسع مجموعات التعليمات التي تسبب أقل حركة مرور البيانات من وإلى كومة أو الذاكرة.لذا ++64bit هنا.

  • و الجميع لا شك سوف أذكر, لديك القدرة على معالجة المزيد من الذاكرة.

  • (تقريبا نسيت هذا واحد) الأم "طويلة" أو "الباحث" size قد ترتفع ، اعتمادا على العمارة ، بمعنى هياكل البيانات على أساس هذه الحصول على أكبر.أكبر = المزيد من الذاكرة إلى التحرك ، مما يعني المزيد من الانتظار ممكن على نقل البيانات:--64bit إذا كنت غير دقيق.

اعتمادا على العمارة الكثير من شواغل أخرى قد تنطبق أيضا.يمكنك أن تطمئن إلى أن المعالج مترجم البائعين في وسعهم من أجل خفض "--"s أعلاه وزيادة "++"s.

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

فإن التوافق مسائل:هذا ليس علة ، هذه الميزة.فإنه يظهر لك الذي كتب تنظيف البرمجيات.

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

فإنه سيتم تسريع تجميع إذا كانت ترجمة عملية الذاكرة-لا بد و استخدام نظام التشغيل 64bit إلى زيادة مقدار الذاكرة التي يمكن استخدامها من قبل النظام الخاص بك.

أتوقع أن يكون أبطأ قليلا, كان لدي تجربة مع FC10.ليس لدي أسباب حقيقية ، لكنها بالتأكيد ليست sizeof(المؤشر) قضية.(*)

بلدي الحدس هو أنه ببساطة هو مسألة أقل الأمثل السائقين أو لف رقائق.

أيضا NTFS-3g كان مضحك تحت 64 بت ، في حين عملت تحت 32 بت (نفس توزيعة نفس نواة نفس القسم ، فقط "معلقة" في بعض الظروف)

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top