2009-03-25 25 views
64

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

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

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

धन्यवाद, जॉर्ज

+0

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

+0

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

+1

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

उत्तर

77

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

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

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

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

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

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

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

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

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

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

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

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

+2

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

+0

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

+0

@Aaron, 1. मैंने आपके शुरुआती बिंदुओं को आपके मूल पोस्ट में सीखने के बाद संपादित किया है। क्या आप समीक्षा और टिप्पणी करने में मदद कर सकते हैं? 2. इसका क्या अर्थ है "अपने कुछ आंतरिक डेटा को अन्य सीपीयू में बेनकाब करें ताकि वे अपने रास्ते में नहीं पहुंच सकें।" आपकी पोस्ट में? – George2

2

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

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

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

+0

अमित, 1. मैंने आपके शुरुआती बिंदुओं को आपके मूल पोस्ट में आपके द्वारा सीखने के बाद संपादित किया है। क्या आप समीक्षा और टिप्पणी करने में मदद कर सकते हैं? 2. क्या मतलब है आपकी पोस्ट में मरना और फाड़ना? – George2

+0

आंसू-> वर्ष (क्षमा करें), मरें: http://en.wikipedia.org/wiki/Die_(integrated_circuit) –

+0

आपसे सीखना अच्छा है। अमित! – George2

4

आप Intel's website पर दोहरी सीपीयू, बहु-कोर और हाइपर-थ्रेडिंग के बारे में कुछ रोचक लेख देख सकते हैं या Yale University से संक्षिप्त लेख में देख सकते हैं।

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

+0

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

+0

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

+1

दोनों लिंक टूटा हुआ है :( – redobot

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