मल्टी सीपीयू पहला संस्करण था: आप उन पर एक या अधिक 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 से ऊपर कुछ भी है।
यदि आपके पास एक चिप के अंदर सबकुछ है, तो सिग्नल बहुत तेजी से चलते हैं और आप जितना चाहें उतना हो सकते हैं (ठीक है, लगभग :)। इसके अलावा, सिग्नल क्रॉसस्टॉक को नियंत्रित करना बहुत आसान है।
स्रोत
2009-03-25 08:39:23
हाइपरथ्रेडिंग कम नहीं है। यह काफी उपयोगी है, खासकर सर्वर के लिए। आईएलपी से कम रिटर्न होते हैं (अनुक्रमिक निर्देशों को पुन: व्यवस्थित करके व्यस्त प्रोसेसर व्यस्त)। हाइपरथ्रेडिंग समांतरता को बढ़ावा देने का एक विकल्प है: कई हार्डवेयर थ्रेड बिना ओवरहेड के निष्पादित होते हैं। –
बहु-कोर और बहु-प्रोसेसर के बारे में मेरे अन्य बिंदुओं के बारे में, क्या आपको लगता है कि मेरे अंक सही हैं? कुछ ग़लत है? – George2
@ जॉर्ज 2 - आपका संपादन बहुत सच है। यही पूरा विचार है। :) सर्वर पर आप जो सबसे अच्छी चीज प्राप्त कर सकते हैं वह शायद बहु-कोर बहु-सीपीयू है, लेकिन सामान्य उपयोग के लिए बहु-कोर सबसे अच्छा शॉट है! –