2009-05-27 11 views
7

मैं कुछ नए सीपीयू जैसे Intel Xeon "Nehalem-EX" के लिए साहित्य में 8 कोर और 16 धागे के रूप में देख रहा हूं। वे यहाँ किस बारे में बात कर रहे हैं? मैंने संदर्भ में इसका उल्लेख उल्लेख किया है, इसलिए SPARCS भी, निश्चित रूप से यह कोड द्वारा उत्पन्न तार्किक धागे की तरह नहीं है? क्या यह हाइपरथ्रेडिंग फिर से नामित है?एक सीपीयू थ्रेड क्या है और यह कोड में तार्किक धागे से कैसे संबंधित है?

उत्तर

10

हाँ, Nehalem-based प्रोसेसर Hyper-threading लागू।

नया नेहलेम-एक्स जिसे आप संदर्भित करते हैं, में 8 भौतिक कोर होते हैं जहां प्रत्येक कोर को कुल 16 लॉजिकल कोर के लिए 2 लॉजिकल कोर के रूप में देखा जा सकता है, जो एकल प्रोसेसर पर 16 अनुप्रयोग धागे को निष्पादित करने की इजाजत देता है।

यह वही तकनीक है जो हाइपर-थ्रेडिंग-सक्षम पेंटियम 4 प्रोसेसर में और हाल ही में, एटम प्रोसेसर पर उपयोग की जाती है। माई ईई पीसी में एक सिंगल कोर एटम प्रोसेसर है जिसमें दो लॉजिकल कोर हैं - विंडोज टास्क मैनेजर दो सीपीयू ग्राफ दिखाएगा; प्रत्येक लॉजिकल कोर के लिए एक।

सूर्य की UltraSPARC T2 (और T1) भी simultaneous multithreading (जिनमें से इंटेल के कार्यान्वयन हाइपर-थ्रेडिंग कहा जाता है - इंटेल के एक ट्रेडमार्क) के लिए अनुमति जो के रूप में कई लॉजिकल कोर प्रकट करने के लिए एक सिंगल कोर एक भी पर एक से अधिक थ्रेड निष्पादित करने के लिए अनुमति देता है कोर।

एक साथ मल्टीथ्रेडिंग के पीछे एक मोटा विचार प्रोसेसर राज्य को स्टोर करने के लिए एकाधिक रजिस्ट्रार होना है, इसलिए ऐसा लगता है कि वास्तव में एक कोर में एकाधिक कोर हैं, क्योंकि इसमें हार्डवेयर रजिस्टरों के कई पूर्ण-सेट हैं।

जबकि एएलयू और एफपीयू जैसी भौतिक सुविधाएं बढ़ सकती नहीं हैं, भौतिक कोर पर अधिक धागे चलाने के लिए रजिस्टरों के अधिक सेट होने से उपलब्ध प्रोसेसर संसाधनों का बेहतर उपयोग हो सकता है। एक धागे को निष्पादित करते समय कोर संतृप्त नहीं हो सकता है, लेकिन कई निष्पादित करने से सभी इकाइयों को इसकी पूरी क्षमता में संतृप्त किया जा सकता है।

तो प्रोग्रामर के लिए इसका क्या अर्थ है?

इसका मतलब है कि हमें अभी भी बहु-थ्रेडेड सॉफ़्टवेयर लिखने की आवश्यकता होगी - एक प्रोग्राम जिसमें केवल एक धागा है केवल एक लॉजिकल कोर का उपयोग करने में सक्षम होगा। केवल अच्छी तरह लिखित बहु-थ्रेडेड कोड होने से हम इन प्रोसेसर की बड़ी संख्या में तार्किक कोर का लाभ उठाने में सक्षम हैं।

साथ-साथ मल्टीथ्रेडिंग के साथ, कोड प्रति लॉजिकल कोर पर एक थ्रेड पर निष्पादित किया जाता है।

1

हाइपरथ्रेडिंग (रास्ते में आईएनटीईएल का ट्रेडमार्क) प्रत्येक थ्रेड को वास्तव में एक साथ चलाने की अनुमति देता है। तो इस मामले में आप एक ही समय में 8X2 अनुप्रयोग धागे चला सकते हैं।

विवरणिका से ...

इंटेल Nehalem वास्तुकला इंटेल की अद्वितीय 45nm उच्च- k धातु गेट प्रौद्योगिकी प्रक्रिया पर बनाया गया

Up to **8 cores** per processor 
Up to **16 threads per processor** with Intel® Hyper-threading 
2.3 billion transistors 

एकल सीपीयू को यह तुलना करें, सिंगल कोर प्रणाली जहां प्रत्येक धागा चाहिए निर्धारित किया जाना चाहिए और अधिकतर केवल एक थ्रेड सक्रिय होगा - वह एक सीपीयू बाध्य कार्य चला रहा है और अन्य I/O स्थानांतरण पर प्रतीक्षा कर रहे हैं।

मूल रूप से थ्रेडिंग का उपयोग या तो समवर्ती गतिविधियों के सेट (मॉडल को समानांतर में नहीं चलाया जाता है) या एक सिस्टम की उपस्थिति का उत्पादन करने के लिए किया जाता था जो I/O करते समय भी प्रतिक्रियाशील था। उदाहरण के लिए थ्रेडिंग के बिना, एक दस्तावेज़ सहेजते समय आपका वर्ड प्रोसेसर स्टॉल दिखाई देगा।

कई सालों से मैंने अपने डेस्कटॉप अनुप्रयोगों में एकाधिक धागे रखने के विचार का विरोध किया - यह कोड जटिल और संभावित रूप से कम प्रदर्शन - उन सभी म्यूटेक्स संचालनों के बारे में सोचें जिन्हें ओएस कर्नेल को शामिल करने की आवश्यकता होती है। वास्तव में धागे के समानांतर निष्पादन के आगमन के साथ, मेरे आपत्तियां कम हो जाती हैं लेकिन मुझे अभी भी विश्वास है कि एक ही प्रक्रिया में एकाधिक धागे की बजाय कई प्रक्रियाएं बेहतर दृष्टिकोण हैं।

क्रिस

+2

क्या आप 8X16 लिखते समय 8 बार 16 का मतलब है? यदि ऐसा है, तो मुझे लगता है कि यह पुराने एचटी सीपीयू की तरह है, प्रति कोर दो थ्रेड, यानी 16 धागे कुल में 128 नहीं। – OregonGhost

+1

हां। इंटेल के अनुसार यह वास्तव में प्रत्येक कोर में 16 धागे का मतलब है। यह प्राप्त करने के लिए उन्हें यह सुनिश्चित करने की आवश्यकता है कि मरने पर तर्क का बहुत अधिक डुप्लिकेशंस है। –

+2

जाहिर है, उनका मतलब यह नहीं है। आपने स्वयं भाग को उद्धृत किया: 16 थ्रेड प्रति ** प्रोसेसर **। – MSalters

2

यह हाइपर-थ्रेडिंग का नाम बदल नहीं है - यह हाइपर-थ्रेडिंग है (यह इस वेबपृष्ठ पर लिखा गया है जिसे आपने लिंक दिया है)।

बस प्रोसेसर ओएस को बताता है कि इसमें 16 कोर हैं, इसलिए यह कोर की दोगुनी संख्या पर कार्यों को संतुलित कर सकता है। हाइपर-थ्रेडिंग तकनीक कुछ मामलों में कुछ लाभ देती है क्योंकि दो अलग-अलग कार्यक्रमों/धागे से दो अलग-अलग निर्देश एक साथ कोर पर निष्पादित किए जा सकते हैं। लेकिन निश्चित रूप से यह 200% गति नहीं देगा। मैंने ऐसे प्रोसेसर पर काम नहीं किया, लेकिन मुझे लगता है कि आप लगभग 10% -20% अतिरिक्त सीपीयू समय प्राप्त कर सकते हैं।

1

यह प्रत्येक ऑपरेटिंग सिस्टम के थ्रेडिंग मॉडल पर निर्भर करता है ताकि ओएस-स्तरीय धागे को हार्डवेयर-स्तर के धागे जैसे प्रश्न में वर्णित किया जा सके।

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

4

बहु-थ्रेडेड प्रोसेसर का चरम बैरल प्रोसेसर है। यह एसएमटी का एक रूप है जहां प्रोसेसर एक गोल रॉबिन तरीके से समान रूप से एकाधिक धागे के बीच स्लॉट को विभाजित करता है। ऐसा करने के लिए, निष्पादन इकाइयों के एक ही सेट का उपयोग करते समय इसे केवल विभिन्न रजिस्टरों की प्रतियों की आवश्यकता होती है। तो, 4 घड़ी चक्रों में यह पाइपलाइन में थ्रेड 0-3 से कोड डाल देगा।

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

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

इस तरह हार्डवेयर में कई धागे काम करते हैं।

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