2013-01-10 43 views
6

मैं जानना चाहता हूं कि सीपीयू बूट करते समय मल्टीकोर प्रोसेसर का कौन सा कोर पहले शुरू होता है? (मेरा मतलब बूटलोडर स्तर पर है) पहला कोर है? या यादृच्छिक कोर?कौन सा कोर बूट करता है जब सिस्टम बूट करता है?

उत्तर

7

आप स्थानीय apic, जो आपको "मात्रा 2 ए" में के बारे में पढ़ सकते हैं पढ़ना चाहते हैं:

http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

प्रत्येक प्रोसेसर एक इसी स्थानीय apic, प्रत्येक स्थानीय apic में वहाँ एक apic आईडी रजिस्टर है , जो सिस्टम init समय पर एक अद्वितीय मूल्य असाइन किया जाता है।

प्रारंभिक कोर जो ऑनलाइन आता है उसे बूटस्ट्रैप प्रोसेसर (बीएसपी) कहा जाता है, और वास्तव में मरने पर कोई भौतिक कोर हो सकता है। अधिक जानकारी "वॉल्यूम 3 ए" में है, जहां वे बूटस्ट्रैप प्रोसेसर चयन प्रक्रिया के बारे में बात करते हैं।

यहाँ vol3a से एक अंश है:

8.4.1 बसपा और एपी प्रोसेसर

सांसद आरंभीकरण प्रोटोकॉल प्रोसेसर के दो वर्गों को परिभाषित करता है: आवेदन प्रोसेसर बूटस्ट्रैप प्रोसेसर (बसपा) और (APs)। एक एमपी सिस्टम के पावर-अप या रीसेट के बाद, सिस्टम हार्डवेयर गतिशील रूप से बस बस के रूप में सिस्टम बस पर प्रोसेसर का चयन करता है। शेष प्रोसेसर को एपी के रूप में नामित किया गया है।

बीएसपी चयन तंत्र के हिस्से के रूप में, बसपा ध्वज आईएस 32_एपीआईसीबीएएसई एमएसआर (चित्रा 10-5 देखें) में सेट किया गया है, यह दर्शाता है कि यह बीएसपी है। यह ध्वज अन्य सभी प्रोसेसर के लिए साफ़ किया गया है।

बीएसपी एपीआईसी पर्यावरण को कॉन्फ़िगर करने के लिए BIOS के बूट-स्ट्रैप कोड को निष्पादित करता है, सिस्टम-व्यापी डेटा संरचनाओं को सेट करता है, और एपी शुरू करता है और प्रारंभ करता है। जब बीएसपी और एपी शुरू किए जाते हैं, तो बीएसपी ऑपरेटिंग सिस्टम प्रारंभिक कोड को निष्पादित करना शुरू कर देता है।

1

यह प्रोसेसर के आर्किटेक्चर पर निर्भर करता है। इस तरह कुछ के लिए वास्तव में एक मानक नहीं है। उदाहरण के लिए पीएस 3 कोर में 9 कोर हैं जो कार्य को दूसरे 8 पर शेड्यूल करते हैं। इस मामले में दूसरे के सामने एक कोर प्रोसेसिंग निर्देशों के संदर्भ में इसके बारे में सोचना उचित है। जहां तक ​​अन्य प्रोसेसर चिंतित हैं, यह एक है समझने के लिए और अधिक मुश्किल बात है। यह मानना ​​समझदारी होगी कि बूटलोडर कोर के सेट पर अपने निर्देश भेजता है जिस बिंदु पर जो भी तर्क द्वार कोर को निर्देश देने के लिए निर्देश देते हैं, वे जो भी तरीके से करते हैं। ज्यादातर मामलों में मुझे पता है कि बूट पर और किसी भी समय कार्य शेड्यूलिंग के बीच वास्तव में कोई अंतर नहीं है। सबसे बुनियादी कार्य शेड्यूलिंग हार्डवेयर केवल पहले उपलब्ध कोर का चयन करेगा जो आम तौर पर मशीन द्वारा "पहले" को माना जाता है। लेकिन जैसे कि मैं अलग-अलग मशीनों को कहता रहता हूं, यह अलग-अलग करता है, इसलिए मैं यह सुझाव दूंगा कि आप किस कोर का उपयोग कर रहे हैं और यह जांच कर रहे हैं कि वह क्या करता है। शुभ लाभ।

+0

आपकी जानकारी के लिए धन्यवाद। आपने कहा "जो भी कोर को मशीन द्वारा" पहला "माना जाता है" - क्या कुछ एएसएम कोड का उपयोग कर वर्तमान कोर/सीपीयूइड को खोजने का कोई तरीका है? ताकि मैं उस एएसएम कोड को कई बार चला सकूं और सभी कोरिड्स/सीपीयूड्स ढूंढ सकूं? मेरे पास कोर 2 जोड़ी है .. मेरा लक्ष्य बूटलोडर स्तर पर सभी कोरों के सीपीयूड को ढूंढना है .. मैं यह कैसे कर सकता हूं? –

+1

hmmm ... चीजों के रूप में cpuid केवल प्रोसेसर के बारे में आपको बता सकता है, इसमें कोर नहीं।यह जानने के लिए कि एक प्रोसेसर के अंदर कौन सा कोर आप कमांड के रूप में हैं, एक असली चुनौती की तरह लगता है। यह आपके द्वारा उपयोग किए जा रहे कोर के डेटा पृष्ठों का एक लिंक है। इस तरह की जानकारी ढूंढने के लिए यह जगह है: http://www.intel.com/design/core2duo/documentation.htm – usumoio

0

प्रत्येक प्रोसेसर संबंधित स्थानीय APIC आईडी वाली उसकी अपनी स्थानीय APIC है, यह एक स्थानीय APIC रजिस्टर से पढ़ा जा सकता है (एक ही एक-एक प्रोसेसर पर अलग आईडी दे)