2009-05-06 7 views
9

एक चीज जिस पर मुझे समझ नहीं है वह एक एएमडी सीपीयू पर इंटेल सीपीयू काम के लिए संकलित कैसे किया जा सकता है।ऑफ़-द-शेल्फ अनुप्रयोग इंटेल और एएमडी प्रोसेसर दोनों पर क्यों काम करते हैं?

मेरी मूल समझ यह है कि यदि आप सी कोड संकलित करते हैं, उदाहरण के लिए, कंपाइलर स्रोत कोड को मशीन भाषा में बदल देता है जिसमें एक विशेष प्रोसेसर के लिए निर्देश होंगे। इसलिए, आपको किसी भी प्लेटफ़ॉर्म के लिए संकलन करने की आवश्यकता है जिसके लिए आप अपने एप्लिकेशन का उपयोग करना चाहते हैं। इंटेल बनाम एएमडी के लिए आपको कंपाइलर की आवश्यकता क्यों नहीं है, और किसी विशेष प्रोसेसर के लिए सॉफ्टवेयर खरीदना है?

मुझे पता है कि एएमडी प्रोसेसर और इंटेल प्रोसेसर पुराने x86 निर्देशों में कुछ संगतता साझा करते हैं; मैं क्या जानना चाहता हूं कि वे ऐसा कैसे करते हैं? मेरा मतलब है, ऐसा नहीं है कि एएमडी या इंटेल एक दूसरे को बुला रहे हैं और एक-दूसरे को अपने व्यापार रहस्य बता रहे हैं, तो वे निर्देश सेट कैसे बना सकते हैं जो संगत हैं?

क्या सभी संगतता अभी भी 386 निर्देश सेट पर आधारित है, "आईएफ एएमडी सीपीयू जैसे कथनों के समूह के साथ, क्या यह ईएलएसई आईएफ इंटेल ऐसा करता है"?

उत्तर

18

एएमडी और इंटेल x86 और x86-64 CPU लगभग पूरी तरह से संगत हैं। वे दोनों x86 और x86-64 को लागू करते हैं। उनमें से प्रत्येक के पास अपना स्वयं का एक्सटेंशन होता है (जैसे एमएमएक्स और 3 डी नाउ), लेकिन कंपाइलर्स आम तौर पर तब तक उनका उपयोग नहीं करते हैं जब तक आप उन्हें नहीं बताते। आजकल, एएमडी और इंटेल दोनों एक दूसरे के एक्सटेंशन का समर्थन करते हैं। अंतर के बारे में चिंता करने का एकमात्र समय यह है कि जब आप वास्तव में निम्न स्तर की कर्नेल सामग्री कर रहे हैं।

वैसे, निर्देश सेट वास्तव में एक "व्यापार रहस्य" नहीं है। कार्यान्वयन है। दोनों कंपनियां निर्देश सेट पर दस्तावेज़ीकरण उत्पन्न करती हैं, इसलिए प्रत्येक इसे कॉपी कर सकता है। इसका कारण यह है कि यदि अधिक कंपनियां संगत चिप्स का उत्पादन करती हैं, तो इस निर्देश सेट के लिए अधिक सॉफ्टवेयर लिखा जाएगा, इसलिए अधिकतर लोग इन चिप्स को खरीद लेंगे। x86/x86-64 मूल रूप से डेस्कटॉप के लिए मानक आर्किटेक्चर है, यह गारंटी देता है कि लोग इंटेल और एएमडी चिप्स खरीदना जारी रखेंगे। इंटेल और एएमडी के पास बहुत अलग कार्यान्वयन होते हैं, वे सिर्फ उसी कोड को निष्पादित करते हैं।

+1

तो, बोडलान के उत्तर के साथ .. निर्देश सेट सार्वजनिक रूप से इंटेल या एएमडी द्वारा प्रकाशित किए जाते हैं, फिर दूसरा एक चिप बनाता है जो उस निर्देश सेट के समान (या उसके कुछ विस्तार) का समर्थन करता है? तो अंतर उन निर्देशों के विशिष्ट हार्डवेयर कार्यान्वयन के भीतर झूठ बोलते हैं। क्या यह सही है? – romandas

+0

@romandas: हाँ, आपकी समझ सही है। चिप निर्माता निर्देश सेट को दस्तावेज करते हैं, जिससे दूसरों को इसकी प्रतिलिपि बनाने की अनुमति मिलती है। – Zifre

+0

मैं सुझाव देता हूं कि उस जानकारी को आपके उत्तर में जोड़ना, या बोनडलान को अपना जोड़ना, इसलिए मैं विलयित उत्तर को निश्चित रूप से स्वीकार कर सकता हूं। – romandas

6

असल में उनके पास एक क्रॉस-लाइसेंसिंग अनुबंध है। सूचना और नवाचार इंटेल से एएमडी तक 90 के दशक में वापस आ गया जब एएमडी 386 और 486 प्रोसेसर का दूसरा स्रोत था, और फिर एएमडी से इंटेल तक जब इंटेल ने x86-64 एक्सटेंशन अपनाया था।

6

यह भी याद रखें कि इन प्रोसेसर के लिए निर्देश सेट सार्वजनिक रूप से दस्तावेज किए गए हैं; आम तौर पर एक विक्रेता निर्देशों का एक नया सेट आविष्कार करेगा, और एक पीढ़ी या दो बाद में दूसरा विक्रेता संगत एक्सटेंशन लागू करेगा। ऐसे में, आईएफ 386 के बजाय .... यदि आपके पास एसईएस 4 की आपूर्ति के साथ कुछ और है तो ... विशिष्ट विक्रेता के संबंध में।

+0

के लिए कोड लिख सकते हैं, इन्हें आमतौर पर उन्नत CPUID क्वेरी के रूप में जाना जाता है। अच्छे समर्थन वाले उत्तर के लिए –

+0

+1; मैंने ज़िफ़्रे को यह जानकारी अपने उत्तर में जोड़ दी थी। – romandas

1

दोनों विक्रेता एक ही निर्देश सेट को लागू करते हैं, इसलिए जब आपका संकलित कोड मशीन निर्देशों में बदल जाता है, तो वे दोनों चिप्स पर काम करेंगे। हालांकि, एसएसई जैसे कुछ विशेष निर्देश सेट हैं जो एक विक्रेता या किसी अन्य के लिए विशिष्ट हो सकते हैं। यदि आप किसी एप्लिकेशन के प्रदर्शन को बेहतर बनाना चाहते हैं, तो आप उपलब्ध होने पर इन सुविधाओं का उपयोग करने के लिए रनटाइम चेक बना सकते हैं।

संबंधित मुद्दे