मल्टी-सीपीयू, मल्टी-कोर और हाइपर-थ्रेड


80

क्या कोई मुझे मल्टी-सीपीयू, मल्टी-कोर और हाइपर-थ्रेड के बीच के अंतर को स्पष्ट करने के लिए कुछ दस्तावेजों की सिफारिश कर सकता है? मैं हमेशा इन मतभेदों के बारे में उलझन में हूं, और विभिन्न परिदृश्यों में प्रत्येक वास्तुकला के पेशेवरों / विपक्षों के बारे में।

संपादित करें: यहां ऑनलाइन सीखने और दूसरों की टिप्पणियों से सीखने के बाद मेरी वर्तमान समझ है; क्या कोई टिप्पणी की समीक्षा कर सकता है?

  1. मुझे लगता है कि हाइपर-थ्रेड उनके बीच सबसे हीन तकनीक है, लेकिन सस्ती है। इसका मुख्य विचार संदर्भ स्विच समय को बचाने के लिए डुप्लिकेट रजिस्टर है;
  2. मल्टी प्रोसेसर हाइपर-थ्रेड से बेहतर है, लेकिन चूंकि विभिन्न सीपीयू अलग-अलग चिप्स पर हैं, इसलिए विभिन्न सीपीयू के बीच संचार मल्टी-कोर की तुलना में अधिक विलंबता है, और कई चिप्स का उपयोग करने से मल्टी-कोर की तुलना में अधिक खर्च और अधिक बिजली की खपत होती है। ;
  3. मल्टी-कोर एक ही चिप पर सभी सीपीयू को एकीकृत करता है, इसलिए मल्टी-प्रोसेसर की तुलना में विभिन्न सीपीयू के बीच संचार की विलंबता बहुत कम हो जाती है। चूंकि यह सभी सीपीयू को रखने के लिए एक एकल चिप का उपयोग करता है, इसलिए यह उपभोक्ता को कम बिजली देता है और मल्टी प्रोसेसर सिस्टम की तुलना में कम खर्चीला होता है।

अग्रिम धन्यवाद, जॉर्ज


हाइपरथ्रेडिंग हीन नहीं है। यह काफी उपयोगी है, विशेष रूप से सर्वर के लिए। ILP से रिटर्न कम हो रहे हैं (क्रमिक निर्देशों को पुन: व्यवस्थित करके प्रोसेसर को व्यस्त रखना)। हाइपरथ्रेडिंग समानता को बढ़ावा देने का एक विकल्प है: कई हार्डवेयर थ्रेड्स बिना ओवरहेड के निष्पादित होते हैं।
अमित

मल्टी-कोर और मल्टी-प्रोसेसर के बारे में मेरे अन्य बिंदुओं के बारे में क्या आपको लगता है कि मेरे अंक सही हैं? कुछ ग़लत है?
जॉर्ज 2

1
@ जॉर्ज 2 - आपका संपादन बहुत सही है। वह पूरा विचार है। :) सर्वर पर मिलने वाली सबसे अच्छी बात शायद एक मल्टी-कोर मल्टी-सीपीयू है, लेकिन सामान्य उपयोग के लिए मल्टी-कोर सबसे अच्छा शॉट है!
बोग्डन कॉन्स्टेंटिंसकु

धन्यवाद बोगदान, आपकी पुष्टि के साथ, मैं और अधिक आश्वस्त हूं! :-)
जॉर्ज 2

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

जवाबों:


86

मल्टी-सीपीयू पहला संस्करण था: आपके पास उन पर एक या अधिक सीपीयू चिप्स के साथ एक या एक से अधिक मेनबोर्ड होंगे। यहां मुख्य समस्या यह थी कि सीपीयू को अपने आंतरिक डेटा को दूसरे सीपीयू में उजागर करना होगा ताकि वे अपने रास्ते में न आएं।

अगला कदम हाइपर-थ्रेडिंग था। मेनबोर्ड पर एक चिप लेकिन इसमें दो बार आंतरिक रूप से कुछ हिस्से थे ताकि यह एक ही समय में दो निर्देशों को निष्पादित कर सके।

वर्तमान विकास मल्टी-कोर है। यह मूल रूप से मूल विचार (कई पूर्ण CPU) हैं, लेकिन एक एकल चिप में। लाभ: चिप डिजाइनर आसानी से चिप में सिंक सिग्नल के लिए अतिरिक्त तारों को डाल सकते हैं (बजाय उन्हें पिन पर रूट करने के लिए, फिर भीड़ वाले मेनबोर्ड पर और दूसरी चिप में)।

सुपर कंप्यूटर आज मल्टी-सीपीयू, मल्टी-कोर हैं: उनके पास आमतौर पर 2-4 सीपीयू के साथ बहुत सारे मेनबोर्ड हैं, प्रत्येक सीपीयू मल्टी-कोर है और प्रत्येक की अपनी रैम है।

[संपादित करें] आपको वह बहुत सही लगा। बस कुछ मामूली बिंदु:

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

  • मल्टी-सीपीयू के साथ मुख्य समस्या यह है कि उन पर चलने वाला कोड अंततः रैम तक पहुंच जाएगा। एन सीपीयू हैं लेकिन रैम तक पहुंचने के लिए केवल एक बस है। तो आपके पास कुछ हार्डवेयर होना चाहिए जो यह सुनिश्चित करता है कि) प्रत्येक CPU को उचित मात्रा में RAM एक्सेस प्राप्त होता है, b) जो रैम के एक ही हिस्से तक पहुँचता है, समस्याएँ उत्पन्न नहीं करता है और c) सबसे महत्वपूर्ण बात यह है कि CPU 2 को सूचित किया जाएगा। जब CPU 1 कुछ मेमोरी एड्रेस पर लिखता है जो CPU 2 के आंतरिक कैश में है। यदि ऐसा नहीं होता है, तो सीपीयू 2 खुशी से कैश्ड मूल्य का उपयोग करेगा, इस तथ्य से बेखबर कि यह पुराना है

    बस कल्पना करें कि आपके पास एक सूची में कार्य हैं और आप उन्हें सभी उपलब्ध सीपीयू में फैलाना चाहते हैं। इसलिए CPU 1 सूची से पहला तत्व लाएगा और पॉइंटर्स को अपडेट करेगा। सीपीयू 2 वही करेगा। दक्षता कारणों से, दोनों सीपीयू न केवल कुछ बाइट्स को कैश में कॉपी करेंगे, बल्कि एक पूरी "कैश लाइन" (जो भी हो)। धारणा यह है कि, जब आप बाइट X पढ़ते हैं, तो आप जल्द ही X + 1 भी पढ़ लेंगे।

    अब दोनों CPU अपने कैश में मेमोरी की एक प्रति है। सीपीयू 1 फिर सूची से अगला आइटम लाएगा। कैश सिंक के बिना, यह ध्यान नहीं दिया जाएगा कि सीपीयू 2 ने सूची भी बदल दी है, और यह सीपीयू 2 के समान आइटम पर काम करना शुरू कर देगा।

    यह वही है जो मल्टी-सीपीयू को प्रभावी ढंग से जटिल बनाता है। इसके साइड इफ़ेक्ट से एक परफॉर्मेंस हो सकती है जो कि बदतर है अगर आपको केवल एक ही सीपीयू पर पूरा कोड चलता है। समाधान मल्टी-कोर था: आप आसानी से कई तारों को जोड़ सकते हैं जैसे कि आपको कैश को सिंक्रनाइज़ करने की आवश्यकता होती है; आप डेटा को एक कैश से दूसरे में भी कॉपी कर सकते हैं ( कैश लाइन के कुछ हिस्सों को अपडेट करने और उसे फिर से लोड किए बिना), आदि या कैश तर्क यह सुनिश्चित कर सकते हैं कि सभी सीपीयू को एक ही कैश लाइन मिलती है जब वे पैकेज के एक ही हिस्से तक पहुंचते हैं वास्तविक RAM, बस कुछ नैनोसेकंड के लिए सीपीयू 2 को अवरुद्ध कर रहा है जब तक कि सीपीयू 1 ने अपने परिवर्तन नहीं किए हैं।

[EDIT2] मल्टी-सीपीयू की तुलना में मल्टी-कोर सरल होने का मुख्य कारण यह है कि एक मेनबोर्ड पर, आप बस दो चिप्स के बीच सभी तारों को नहीं चला सकते हैं जिन्हें आपको सिंक प्रभावी बनाने की आवश्यकता होगी। साथ ही एक सिग्नल केवल 30 सेमी / एनपीएस टॉप (प्रकाश की गति; एक तार में, आपके पास आमतौर पर बहुत कम होता है) की यात्रा करता है। और यह मत भूलो कि, मल्टी-लेयर मेनबोर्ड पर, सिग्नल एक-दूसरे को प्रभावित करना शुरू करते हैं (क्रॉसस्टॉक)। हम यह सोचना पसंद करते हैं कि 0 0V है और 1 5V है, लेकिन वास्तव में, "0" -0.5V के बीच की चीज़ है (1-1 से एक लाइन ड्रॉप करते समय ओवरड्राइव) और .5V और "1" 0.8V से ऊपर कुछ भी है।

यदि आपके पास एक चिप के अंदर सब कुछ है, तो सिग्नल बहुत तेजी से चलते हैं और आपके पास जितने चाहें (अच्छी तरह से, लगभग :) हो सकते हैं। इसके अलावा, सिग्नल क्रॉसस्टॉक को नियंत्रित करना बहुत आसान है।


3
हाइपर-थ्रेडिंग की आपकी धारणा थोड़ी भ्रामक हो सकती है, क्योंकि हाइपरथ्रेडिंग "सिर्फ" कई थ्रेड्स के समानांतर निष्पादन का अनुकरण करता है - लेकिन मुख्य रूप से अंतर्निहित सीपीयू लॉजिक के माध्यम से बहु-थ्रेडेड प्रदर्शन में सुधार करने की कोशिश करता है।
जेसी इनाचियो

@jcinacio, क्या हाइपर-थ्रेडिंग बहु प्रक्रिया प्रदर्शन में सुधार करता है? क्यों?
जॉर्ज 2

@Aaron, 1. मैंने आपसे सीखने के बाद अपने वर्तमान बिंदुओं को अपने मूल पोस्ट में संपादित किया है। क्या आप कृपया समीक्षा और टिप्पणी करने में मदद कर सकते हैं? 2. क्या मतलब है "अपने आंतरिक डेटा के कुछ अन्य CPU के लिए बेनकाब ताकि वे अपने रास्ते में नहीं मिलेगा।" अपनी पोस्ट में
जॉर्ज 2

@Aaron, आपका उत्तर इतना उत्कृष्ट, मेरा आखिरी प्रश्न, आप मल्टी-कोर CPU क्यों कहते हैं कि CPU स्थिति सिंक्रोनाइज़ेशन के मुद्दे को हल करता है / RAM मुद्दों की प्रतीक्षा करता है? मुझे लगता है कि अगर कोड लॉजिक्स समान हैं, तो सिंक्रनाइज़ेशन और प्रतीक्षा करें RAM समस्या अभी भी मौजूद है। कोई टिप्पणी?
जॉर्ज 2

1
@AmitP कृपया ध्यान दें कि बहुत व्यापक प्रश्न प्रोग्रामर को वोट देने और बंद करने के लिए होते हैं, देखें प्रोग्रामर्स पर क्या होता है। स्टैक ओवरफ़्लो के लिए एक गाइड
कुटकी

4

आप इंटेल की वेबसाइट पर या येल विश्वविद्यालय के एक संक्षिप्त लेख में दोहरे सीपीयू, मल्टी-कोर और हाइपर-थ्रेडिंग के बारे में कुछ दिलचस्प लेख पा सकते हैं ।

मुझे आशा है कि आपको यहां आपकी जरूरत की सभी जानकारी मिल जाएगी।


बोगदान, मैंने अपने मूल अंक को अपने मूल पद में संपादित किया है। क्या आप कृपया समीक्षा और टिप्पणी करने में मदद कर सकते हैं? आपके अनुशंसित लिंक पढ़ने के बाद मैंने उन्हें सीखा।
जॉर्ज 2

@ जॉर्ज 2 - आपका संपादन बहुत सही है। वह पूरा विचार है। :) सर्वर पर मिलने वाली सबसे अच्छी चीज शायद एक मल्टी-कोर मल्टी-सीपीयू है
बोगडान कॉन्स्टेंटिंसक्यू

2
दोनों लिंक टूटे हुए हैं :(
racachach

2

संक्षेप में: मल्टी-सीपीयू या मल्टी-प्रोसेसर सिस्टम में कई प्रोसेसर होते हैं। मल्टी-कोर सिस्टम एक मल्टी-प्रोसेसर सिस्टम है जिसमें एक ही मरने पर कई प्रोसेसर होते हैं। हाइपरथ्रेडिंग में, कई थ्रेड्स एक ही प्रोसेसर पर चल सकते हैं (जो कि इन कई थ्रेड्स के बीच संदर्भ-स्विच का समय बहुत छोटा है)।

मल्टी-प्रोसेसर अभी 30 साल से हैं लेकिन ज्यादातर लैब में हैं। मल्टी-कोर नया लोकप्रिय मल्टी-प्रोसेसर है। सर्वर प्रोसेसर आजकल मल्टी-प्रोसेसर के साथ-साथ हाइपरथ्रेडिंग को लागू करते हैं।

इन विषयों पर विकिपीडिया के लेख काफी निराशाजनक हैं।


अमित, 1. मैंने आपसे सीखने के बाद अपने मूल अंक में अपने वर्तमान बिंदुओं को संपादित किया है। क्या आप कृपया समीक्षा और टिप्पणी करने में मदद कर सकते हैं? 2. आपकी पोस्ट में मरने और आंसू का क्या मतलब है?
जॉर्ज 2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.