لماذا خارج على الرف تعمل التطبيقات على كل من معالجات إنتل وأيه إم دي؟

StackOverflow https://stackoverflow.com/questions/832007

  •  06-07-2019
  •  | 
  •  

سؤال

وشيء واحد أنا لا يعقلون عليه هو كيف يمكن التعليمات البرمجية المترجمة لعمل وحدة المعالجة المركزية إنتل على CPU AMD.

وبلدي قاعدة التفاهم هو أنه إذا كنت ترجمة التعليمات البرمجية C، على سبيل المثال، المترجم يتحول شفرة المصدر إلى لغة الآلة التي سيكون لها تعليمات لمعالج معين. لذلك، تحتاج إلى ترجمة مع مترجم لأي منصة تريد طلبك للاستخدام. لماذا لا تحتاج إلى مترجم لAMD مقابل انتل، ويجب أن شراء البرمجيات لمعالج معين؟

وأنا أعلم أن معالجات AMD و Intel تشترك في بعض التوافق في تعليمات إلى x86 القديمة. ما أود أن أعرفه هو كيف يفعلون ذلك؟ أعني، انها ليست مثل AMD أو Intel يدعون بعضهم البعض، ونقول أسرار تجارتها بعضها البعض، فكيف يمكنهم إنشاء مجموعات التعليمات التي تتوافق؟

هل كل التوافق تزال تعتمد على مجموعة 386 التعليمات، مع مجموعة من عبارات مثل "IF AMD CPU، تفعل ذلك الا اذا INTEL فعل ذلك"؟

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

المحلول

وAMD و Intel x86 و إكس86-64 وحدات المعالجة المركزية متوافقة تماما تقريبا. كلاهما تنفيذ جميع x86 و إكس86-64. أنها تمتلك كل امتداداتها الخاصة (مثل MMX و3DNow)، ولكن المجمعين لا عموما استخدامها إلا إذا كنت أقول لهم. في الوقت الحاضر، AMD و Intel كل من دعم ما يقرب من جميع ملحقات بعضهم البعض. المرة الوحيدة التي قد داعي للقلق حول الفرق هو عندما تقومون به حقا على مستوى منخفض الاشياء النواة.

وبالمناسبة، فإن مجموعة التعليمات ليست في الحقيقة "سر تجاري". والتنفيذ. كل من الشركات تنتج وثائق على مجموعة التعليمات، لذلك كل يمكن نسخها. والسبب في ذلك هو على الارجح انه اذا المزيد من الشركات تنتج رقائق متوافقة، ستتم كتابة المزيد من البرامج لهذه المجموعة تعليمات، حتى أكثر الناس سيشترون هذه الرقائق. إلى x86 / إكس86-64 هو في الأساس بنية القياسية لسطح المكتب، وضمان أن الناس سوف تستمر في شراء رقائق إنتل وأيه إم دي. إنتل وأيه إم دي لديها تطبيقات مختلفة جدا، وأنها مجرد تنفيذ نفس الرمز.

نصائح أخرى

وفي الواقع لديهم اتفاق تبادل التراخيص. المعلومات والابتكار تدفقت من إنتل AMD مرة أخرى في ال 90 عندما كان AMD مصدر ثان من 386 و 486 المعالجات، ومن ثم من AMD لشركة إنتل عندما اعتمدت إنتل ملحقات إكس86-64.

وتذكر أيضا أن مجموعات تعليمات لهذه المعالجات موثقة للجمهور؛ عادة بائع واحد سوف يخترع مجموعة جديدة من التعليمات، وجيل أو اثنين في وقت لاحق أي مركز آخر ستنفذ ملحقات متوافقة. على هذا النحو، بدلا من IF 386 .... لديك شيء أكثر على غرار IF SSE4 ويدعم ...، دون النظر إلى ببائعي.

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

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