हाइपर-थ्रेडिंग (SMT) एफिनिटी और इक्विटी


1

यह प्रश्न इंटेल गुरुओं को पता है कि मुझे पता है कि वहाँ हैं। क्या एक शारीरिक सीपीयू पर दोनों धागे समान रूप से व्यवहार किए जाते हैं?

जैसा कि हम जानते हैं, इंटेल सीपीयू पर हाइपर थ्रेडिंग एक ऐसी प्रणाली है जिसमें प्रत्येक भौतिक कोर को ओएस के लिए 2 वर्चुअल कोर के रूप में प्रस्तुत किया जाता है। ये 2 वर्चुअल कोर प्रोसेसर को उन घटनाओं पर 2 निष्पादन इकाइयों (थ्रेड्स @ वर्चुअल कोर) के बीच स्विच करने की क्षमता देते हैं जो ओएस (पेज दोष, अन्य सीपीयू-आंतरिक घटनाओं) के लिए अज्ञात हैं जो सामान्य रूप से सीपीयू कचरे के चक्र का इंतजार कर रहे हैं। अन्य IO ईवेंट।

डिफ़ॉल्ट रूप से, एक ओएस को हाइपर-थ्रेडिंग को ध्यान में रखने की आवश्यकता नहीं है। सभी कोर अंततः काम करेंगे, केवल अंतर यह है कि अब सभी दृश्य / आभासी कोर एक ही गति से प्रक्रिया नहीं कर सकते हैं। एक ही भौतिक कोर (VCPU0 + 1 - & gt; CPU 0) पर 2 थ्रेड्स के लिए शेड्यूल किए गए कार्य 2 विभिन्न कोर (VCPU0 + 2 - & gt; CPU 0 + 1) पर निर्धारित कार्य के रूप में तेज़ नहीं होंगे।

मैंने जो शोध किया है, उससे 'हाइपर-थ्रेडिंग' के बारे में पता चलता है कि ओएस 'वर्चुअल कोर' पर शेड्यूल करने से पहले ओएस की कोशिश करेंगे और शारीरिक कोर के प्रति काम को शेड्यूल करेंगे। मैं आमतौर पर इसे 'सम' वीसीपीयू के रूप में देखता हूं जो पहले निर्धारित किया गया है (1 + 3 से पहले वीसीपीयू 0 + 2 भरें)। क्या 'सम' और 'विषम' दोनों धागे समान हैं? (वास्तव में 'हाइपर थ्रेड' वर्चुअल CPU नहीं है)।

दूसरे शब्दों में, क्या भौतिक सीपीयू के लिए प्राथमिक / माध्यमिक 'थ्रेड' नहीं है? अगर मैं सिर्फ वीसीपीयू 1 पर काम करता हूं, तो क्या यह वैसा ही प्रदर्शन करेगा जैसा कि मैं सिर्फ वीसीपीयू 0 पर निर्धारित करता हूं? यह मानते हुए कि यदि दोनों पर समान कार्य निर्धारित किया जाता है, तो क्या दोनों धागों को पूरा होने में लगभग दो बार समय लगेगा?


सॉफ़्टवेयर भौतिक कोर और वर्चुअल कोर के बीच अंतर नहीं बता सकता है। OS कर सकते हैं लेकिन ऐसा इसलिए है क्योंकि यह जिस मोड में चलता है। जैसा कि हम जानते हैं, इंटेल सीपीयू पर हाइपर थ्रेडिंग एक ऐसी प्रणाली है जिसमें प्रत्येक भौतिक कोर को ओएस के लिए 2 आभासी कोर के रूप में प्रस्तुत किया जाता है। - यह गलत है। यह वास्तव में 1 भौतिक कोर और 1 आभासी कोर के रूप में रिपोर्ट किया गया है, केवल ओएस को इस भेद के बारे में पता है। आप सभी हाइपरथ्रेडिंग से परिचित नहीं हैं।
Ramhound

1
रामहाउंड, सीपीयू पैकेज दर असल दो "प्रोसेसर" के रूप में गणना करता है (विंडोज उन्हें "लॉजिकल प्रोसेसर", एलपी) कहता है यदि कोर फर्मवेयर में एचटी सक्षम है। "भौतिक कोर" बनाम "वर्चुअल कोर" जैसी कोई अवधारणा नहीं है; दोनों का उपयोग करने के लिए OS को कुछ खास नहीं चाहिए। अन्यथा, Windows 2000 की तरह, HT से पूरी तरह अनजान रहने वाले OS प्रति कोर दो LPs का उपयोग करने में सक्षम नहीं होंगे। लेकिन, निश्चित रूप से, उन्होंने किया। यह केवल एसीपीआई तालिकाओं के क्वेरी द्वारा है कि अधिक हाल ही के ओएस एलपीएस से कोर (और कोर टू सीपीयू सॉकेट्स) के संबंधों को सीख सकते हैं और तदनुसार अपने शेड्यूलिंग निर्णयों को अनुकूलित कर सकते हैं।
Jamie Hanrahan

हाँ, जो मैं यहाँ पुष्टि करना चाहता था, वह यह था कि OS को वास्तव में: 1 'कोर' (1 भौतिक कोर) के बजाय 1 'कोर' और 1 'वर्चुअल कोर' के साथ प्रस्तुत किया गया था। प्लस पुष्टि करता है कि वे सभी वास्तविक कोर हैं जहां तक ​​किसी भी ओएस का संबंध होना चाहिए, यहां चर्चा की गई विशेष शेड्यूलिंग चिंताओं को छोड़कर
Colin Godsey

फिर से ... चूंकि Win2K दो "तार्किक प्रोसेसर" का उपयोग करने में सक्षम है, भले ही उसके पास है एसएमटी / एचटी के बारे में कोई जागरूकता नहीं है , यह बहुत अच्छा संकेत है कि जहां तक ​​किसी भी गैर-एचटी-अवगत ओएस का संबंध है वे "वास्तविक कोर" से अप्रभेद्य हैं जो एचटी सक्षम नहीं हैं। लेकिन एसीपीआई तालिकाओं से ओएस एलपी से कोर के संबंध और कोर से भौतिक सीपीयू पैकेज (चीजें जो सॉकेट में जाती हैं) सीख सकती हैं। यह भी ध्यान देने योग्य है कि कुछ भी चल रहा है, कहते हैं, दो HT LPs को धारावाहिकीकरण के मुद्दों ("दौड़ की स्थिति") के बारे में सावधान रहना होगा क्योंकि यह दो गैर-HT कोर पर होगा।
Jamie Hanrahan

जवाबों:


3

क्या एक शारीरिक सीपीयू पर दोनों धागे समान रूप से व्यवहार किए जाते हैं?

हाँ। एक धागा या दूसरे को कोर के निष्पादन संसाधनों के आवंटन में कोई प्राथमिकता नहीं है। (एक "निष्पादन संसाधन" क्या है? मैं नीचे दिए गए लेख को देखता हूं। लेकिन उदाहरण वास्तुशिल्प रजिस्टरों (आईपी, एसपी, ईएक्सएक्स, आदि), "निष्पादन इकाइयां" हैं जो अंकगणित, आदि जैसे विशिष्ट कार्यों को लागू करते हैं।

जैसा कि हम जानते हैं, इंटेल सीपीयू पर हाइपर थ्रेडिंग एक ऐसी प्रणाली है जिसमें प्रत्येक भौतिक कोर को ओएस के लिए 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 कैश और मेमोरी बैंडविड्थ मुद्दों के कारण दो धागे दो अलग-अलग कोर पर चल रहे थे। लेकिन अगर दोनों थ्रेड बहुत मेमोरी-इंटेंसिव काम नहीं कर रहे थे, तो आप काफी करीब आ सकते हैं।


हाँ, निश्चित रूप से मेरे सवालों का जवाब है। हाँ, मुझे लगता है कि मैं बहुत अनिश्चित था कि 'संसाधनों' को वास्तव में कोर स्तर के बीच स्विच किया गया था, लेकिन मुझे लगता है कि यह समझ में आता है कि जो कुछ भी संभव था, उसके बीच स्विच होगा। गलत, मतलब और मैं पृष्ठ दोष नहीं था, लेकिन मुझे लगता है कि सीपीयू कैश L1 / L2 या कुछ और पर याद करता है, लेकिन बड़ा बिंदु जा रहा है - जो भी निष्क्रिय समय इसे स्विच कर सकता है।
Colin Godsey

और 'लगभग दो बार लंबे समय' पर अंतिम टिप्पणी भी बुरी तरह से कहा गया था :( मतलब: सबसे खराब स्थिति दो बार लंबे समय तक, सबसे अच्छा मामला कुछ आवेदन-निर्भर अनुपात कम! इसका जवाब दिया कोई नहीं कम!
Colin Godsey
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.