क्या एक शारीरिक सीपीयू पर दोनों धागे समान रूप से व्यवहार किए जाते हैं?
हाँ। एक धागा या दूसरे को कोर के निष्पादन संसाधनों के आवंटन में कोई प्राथमिकता नहीं है। (एक "निष्पादन संसाधन" क्या है? मैं नीचे दिए गए लेख को देखता हूं। लेकिन उदाहरण वास्तुशिल्प रजिस्टरों (आईपी, एसपी, ईएक्सएक्स, आदि), "निष्पादन इकाइयां" हैं जो अंकगणित, आदि जैसे विशिष्ट कार्यों को लागू करते हैं।
जैसा कि हम जानते हैं, इंटेल सीपीयू पर हाइपर थ्रेडिंग एक ऐसी प्रणाली है जिसमें प्रत्येक भौतिक कोर को ओएस के लिए 2 आभासी कोर के रूप में प्रस्तुत किया जाता है।
यह वास्तव में सिर्फ दो चीजों के रूप में प्रस्तुत किया गया है, जैसे- OS-to-the-OS-to-be-cores - या दो "तार्किक प्रोसेसर" के रूप में विंडोज उन्हें कहता है। (रामहाउंड ने जो दावा किया उसके बावजूद।) यदि आपने एचटी को बंद कर दिया है, तो प्रत्येक कोर में केवल एक एलपी होता है, इसलिए एक ही शब्दावली का उपयोग किया जाता है।
यदि आपके पास एक नहीं-एचटी-जागरूक ओएस है, तो एचटी सक्षम के साथ आपका कोर बस दो कोर की तरह दिखेगा, और एन्यूमरेट किया जाएगा और ओएस द्वारा उस तरह से उपयोग किया जाएगा। वास्तव में विंडोज 2000 में यह मामला था, जिसमें एचटी के बारे में कोई जागरूकता नहीं थी।
ये 2 वर्चुअल कोर प्रोसेसर को उन घटनाओं पर 2 निष्पादन इकाइयों (थ्रेड्स @ वर्चुअल कोर) के बीच स्विच करने की क्षमता देते हैं जो ओएस (पेज दोष, अन्य सीपीयू-आंतरिक घटनाओं) के लिए अज्ञात हैं जो सामान्य रूप से सीपीयू कचरे के चक्र का इंतजार कर रहे हैं। अन्य IO ईवेंट।
यह वास्तव में नहीं है कि यह कैसे काम करता है (और पृष्ठ दोष, मैं जोड़ूंगा, सबसे निश्चित रूप से ओएस के लिए जाना जाता है! शायद आप मेमोरी एक्सेस अव्यक्त के बारे में सोच रहे हैं)। HT- सक्षम प्रोसेसर थ्रेड्स के बीच OS- स्तर के संदर्भ स्विच की तरह कुछ भी नहीं करता है। याद रखें, एक एचटी कोर वास्तव में दो अलग-अलग (तार्किक) प्रोसेसर के रूप में गणना करता है, प्रत्येक वास्तुशिल्प रजिस्टरों के अपने सेट के साथ होता है, एक थ्रेड संदर्भ स्विच में उन रजिस्टरों की सामग्री को मेमोरी (थ्रेड ऑब्जेक्ट में) और रजिस्टरों में कॉपी किया जाता है कुछ अन्य धागे के सहेजे गए संदर्भ से लोड किया गया। एचटी में ऐसा नहीं होता है, क्योंकि उन रजिस्टरों (और कई अन्य संसाधनों) को दो एलपी द्वारा दोहराया जाता है। इसलिए प्रत्येक एलपी की स्थिति सीपीयू के भीतर निरंतर बनी रहती है।
लेकिन ऐसे अन्य संसाधन हैं जो डुप्लिकेट नहीं हैं। HT, प्रोसेसर फर्मवेयर को निष्पादन संसाधनों, संसाधनों का उपयोग करने की अनुमति देता है जो एक एलपी की गतिविधियों का समर्थन करने के लिए सिर्फ एक एलपी चल रहा था, तो बर्बाद हो जाएगा। यहाँ एक बहुत अच्छा वर्णन है: http://arstechnica.com/features/2002/10/hyperthreading/
डिफ़ॉल्ट रूप से, एक ओएस को हाइपर-थ्रेडिंग को ध्यान में रखने की आवश्यकता नहीं है। सभी कोर अंततः काम करेंगे, केवल अंतर यह है कि अब सभी दृश्य / आभासी कोर एक ही गति से प्रक्रिया नहीं कर सकते हैं। एक ही भौतिक कोर (VCPU0 + 1 - & gt; CPU 0) पर 2 थ्रेड्स के लिए शेड्यूल किए गए कार्य 2 विभिन्न कोर (VCPU0 + 2 - & gt; CPU 0 + 1) पर निर्धारित कार्य के रूप में तेज़ नहीं होंगे।
सब सही हैं। विंडोज 2000 में एचटी के बारे में कोई जागरूकता नहीं थी, लेकिन जब इसे एचटी सक्षम के साथ एक ही सीपीयू कोर पर चलाया गया, तो उसने दो प्रोसेसर देखे और उनका इस्तेमाल किया। (ऐसे प्लेटफार्मों के लिए शुरुआती फर्मवेयर के साथ गणना के आदेश के कारण, यदि आप Win2K का एक संस्करण चला रहे थे जो केवल दो सीपीयू का समर्थन करता था, तो यह दुर्भाग्य से सीपीयू पैकेजों में से एक के भीतर दो एलपी का उपयोग करेगा! यह बाद में फर्मवेयर ("BIOS" के साथ तय किया गया था) ") अद्यतन जो ACPI तालिकाओं में LPs के स्वरूप के क्रम को बदल देता है।"
मैंने जो शोध किया है, उससे 'हाइपर-थ्रेडिंग' से अवगत ओएस 'वर्चुअल कोर' पर समयबद्धन को दोगुना करने से पहले भौतिक कोर के अनुसार काम करने और शेड्यूल करने के लिए जाएगा।
विंडोज निश्चित रूप से करता है। वे प्रति कोर केवल एक एलपी का उपयोग करने की कोशिश करते हैं। उदाहरण के लिए, जब एक नव-रेडी थ्रेड को चलाने के लिए एक बेकार एलपी की तलाश की जाती है, तो विंडोज अनुसूचक पहले एक बेकार एलपी को खोजने की कोशिश करता है जो कि एक कोर में होता है जहां दोनों एलपी बेकार हैं।
मैं आमतौर पर इसे 'सम' वीसीपीयू के रूप में देखता हूं जो पहले निर्धारित किया गया है (1 + 3 से पहले वीसीपीयू 0 + 2 भरें)। क्या 'सम' और 'विषम' दोनों धागे समान हैं?
ठीक है, वे समान हैं कि एक एलपी के लिए कोर के भीतर कोई अंतर्निहित पूर्वाग्रह नहीं है। यह हो सकता है कि एक को दूसरे की तुलना में तेजी से काम मिल जाए, क्योंकि एक पर चलने वाले धागे को दूसरे की तुलना में कम निष्पादन संसाधनों की आवश्यकता होती है।
यह वास्तव में एचटी की कमी का कुछ है, वैसे, एचटी-सक्षम सीपीयू दो एलपी के बीच प्राथमिकता की किसी भी अवधारणा को लागू नहीं करता है। मान लीजिए कि आपके पास दो कम्प्यूट-बाउंड थ्रेड हैं जो OS के लिए अलग-अलग प्राथमिकता के हैं। ओएस के नियमों के अनुसार, यदि आपके पास सिर्फ एक तार्किक प्रोसेसर है, तो उच्च प्राथमिकता वाला धागा व्यावहारिक रूप से सीपीयू समय के सभी प्राप्त करेगा। लेकिन, मान लीजिए कि हमारे पास दो मुक्त एलपी हैं जो एक ही कोर में होते हैं। कोर फर्मवेयर उन्हें लगभग समान रूप से चलाने की कोशिश करेगा भले ही वह वास्तव में ओएस क्या चाहता है। (कम से कम, पिछली बार जब मैंने इन विवरणों को देखा, तो यह मामला था।)
(वास्तव में 'हाइपर थ्रेड' वर्चुअल CPU नहीं है)। दूसरे शब्दों में, क्या भौतिक सीपीयू के लिए प्राथमिक / माध्यमिक 'थ्रेड' नहीं है?
सही बात। वहाँ नही है। वैसे, CPU और CPU कोर में "थ्रेड्स" नहीं होते हैं। एक तार्किक प्रोसेसर भाग सकता है एक धागा। आपके पास जितने अधिक एलपी हैं, उतने ही धागे एक ही समय में "कंप्यूटिंग" हो सकते हैं।
अगर मैं सिर्फ वीसीपीयू 1 पर काम करता हूं, तो क्या यह वैसा ही प्रदर्शन करेगा जैसा कि मैं सिर्फ वीसीपीयू 0 पर निर्धारित करता हूं?
हाँ।
यह मानते हुए कि यदि दोनों पर समान कार्य निर्धारित किया जाता है, तो क्या दोनों धागों को पूरा होने में लगभग दो बार समय लगेगा?
नहीं। HT का पूरा बिंदु यह है कि एक कोर में आमतौर पर अधिक निष्पादन संसाधन उपलब्ध होते हैं जो किसी एक धागे का उपयोग कर सकते हैं। कोर को दो एलपी के रूप में पेश करके, दो थ्रेड्स "एक ही समय में" चल सकते हैं और बेकार बैठे कम निष्पादन संसाधन हैं। अधिकांश थ्रेड्स के साथ आप उम्मीद कर सकते हैं कि आपके दो धागे 1.4x से 1.7x के बीच कहीं और पूरे होंगे, जिसमें से सिर्फ एक को लिया जाएगा।
एक चरम मामला होगा यदि थ्रेड्स में से एक लगभग सभी पूर्णांक अंकगणित कर रहा था, और दूसरा लगभग सभी फ्लोटिंग-पॉइंट कार्य। फिर भी, आपको समान प्रदर्शन प्राप्त करने की संभावना नहीं होगी जैसे कि साझा किए गए L3 कैश और मेमोरी बैंडविड्थ मुद्दों के कारण दो धागे दो अलग-अलग कोर पर चल रहे थे। लेकिन अगर दोनों थ्रेड बहुत मेमोरी-इंटेंसिव काम नहीं कर रहे थे, तो आप काफी करीब आ सकते हैं।