कौन सा कोर प्रत्येक "सीपीयू" के अनुरूप है?
मान लें कि हमारे पास Core 1, 2, 3 और 4 है, CPU4 और CPU5 कोर 3 का प्रतिनिधित्व करते हैं।
करता है (कहते हैं) सीपीयू 6 और सीपीयू 7 नीचे एक कोर का प्रतिनिधित्व करते हैं; एचटी और असली कोर?
दोनों के बीच कोई अंतर नहीं है - वे दोनों सीपीयू में भौतिक हार्डवेयर इंटरफेस हैं, हार्डवेयर में तार्किक इंटरफ़ेस लागू किया गया है ( अधिक जानकारी के लिए इंटेल कोर प्रोसेसर डेटशीट, वॉल्यूम 1 देखें)। मूल रूप से, प्रत्येक कोर में दो अलग-अलग निष्पादन इकाइयाँ होती हैं, लेकिन यह उनके बीच कुछ सामान्य संसाधनों को साझा करती है। यही कारण है कि कुछ मामलों में हाइपरथ्रेडिंग वास्तव में प्रदर्शन को कम कर सकता है।
यदि, उदाहरण के लिए, सीपीयू 6 एक वास्तविक कोर और सीपीयू 7 एक एचटी कोर का प्रतिनिधित्व करता है, तो क्या केवल सीपीयू 7 को सौंपा गया एक धागा केवल एक वास्तविक कोर के संसाधनों पर छोड़ दिया जाएगा? (यह मानते हुए कि अन्य कार्य चल रहे हैं)
ऊपर देखो। केवल सीपीयू 6 या ओनली सीपीयू 7 को सौंपे गए धागे को उसी गति से निष्पादित किया जाएगा (यह मानते हुए कि धागा एक ही काम करता है, और प्रोसेसर में अन्य कोर निष्क्रिय हैं)। Windows HT- सक्षम प्रोसेसर के बारे में जानता है, और प्रक्रिया अनुसूचक इन बातों को ध्यान में रखता है।
क्या हाइपरथ्रेड को पूरी तरह से प्रोसेसर के भीतर प्रबंधित किया जाता है जैसे कि थ्रेड्स आंतरिक रूप से घिस जाते हैं? यदि हां, तो क्या वह सीपीयू स्कोप या कोर स्कोप है? उदाहरण: यदि CPU 6 और 7 एक कोर का प्रतिनिधित्व करते हैं, तो क्या इससे कोई फर्क नहीं पड़ता कि कौन सी प्रक्रिया सौंपी गई है क्योंकि सीपीयू संसाधनों को एक रनिंग थ्रेड के रूप में उपयुक्त करेगा?
दोनों। वास्तविक हार्डवेयर ही शेड्यूल नहीं करता है कि प्रोग्राम को चलाने के लिए कोर क्या है, यह ऑपरेटिंग सिस्टम का काम है। हालांकि, सीपीयू, वास्तविक निष्पादन इकाइयों के बीच संसाधनों को साझा करने के लिए जिम्मेदार है, और इंटेल यह निर्धारित करता है कि आप इसे यथासंभव प्रभावी बनाने के लिए कोड कैसे लिख सकते हैं।
मुझे लगता है कि लंबे समय से चल रहे एकल-थ्रेडेड प्रक्रियाओं को कोर के चारों ओर बहुत कम उछाला जाता है, कम से कम कार्य प्रबंधक के अनुसार। क्या इसका मतलब यह है कि किसी एक कोर को एक प्रक्रिया सौंपने से प्रदर्शन में थोड़ा सुधार होगा (संदर्भ स्विच और कैश अमान्यताओं आदि से बचकर)? यदि हां, तो क्या मुझे पता है कि मैं "सिर्फ एक वर्चुअल कोर" नहीं दे रहा हूं?
यह सामान्य व्यवहार है, और नहीं, इसे एक ही कोर में निर्दिष्ट करने से प्रदर्शन में सुधार नहीं होगा। यह कहा जा रहा है, अगर किसी कारण से आप यह सुनिश्चित करना चाहते हैं कि किसी एकल प्रक्रिया को केवल एक ही, भौतिक कोर पर निष्पादित किया जाता है, तो इसे किसी भी तार्किक प्रोसेसर पर असाइन करें।
प्रक्रिया अनुसूचक के कारण प्रक्रिया "चारों ओर उछलती" है। यह सामान्य व्यवहार है, और आप इस प्रक्रिया को निष्पादित कर सकते हैं (चाहे कितने थ्रेड्स हों), इसे सीमित करके आप सबसे कम संभावना वाले अनुभव को कम कर देंगे, क्योंकि प्रक्रिया अनुसूचक को अब आपके द्वारा लगाए गए प्रतिबंधों के साथ सब कुछ बनाने के लिए कड़ी मेहनत करनी होगी। हां, यह जुर्माना ज्यादातर मामलों में नगण्य हो सकता है, लेकिन नीचे की रेखा तब तक है जब तक आपके पास ऐसा करने का कोई कारण न हो, नहीं !