क्यों नहीं एक बड़ा सीपीयू कोर? [बन्द है]


25

मुझे समझ नहीं आता कि CPU निर्माता मल्टी-कोर चिप्स क्यों बनाते हैं। कई कोर का स्केलिंग भयानक है, यह अत्यधिक विशिष्ट अनुप्रयोग है, और मुझे यकीन है कि आप कुछ प्रोग्राम या कोड को इंगित कर सकते हैं जो कई कोर पर बहुत अच्छा चलता है, लेकिन ज्यादातर समय स्केलिंग कचरा है। यह सिलिकॉन डाई स्पेस की बर्बादी और ऊर्जा की बर्बादी है।

उदाहरण के लिए, खेल, लगभग कभी भी चार से अधिक कोर का उपयोग नहीं करते हैं। Ansys या धाराप्रवाह जैसे विज्ञान और इंजीनियरिंग सिमुलेशन की कीमत है कि पीसी कितने कोर पर चलता है, इसलिए आप अधिक भुगतान करते हैं क्योंकि आपके पास अधिक कोर हैं, लेकिन अधिक कोर का लाभ वास्तव में पिछले 16 कोर से खराब हो जाता है, फिर भी आपके पास ये 64 कोर हैं workstations ... यह पैसे और ऊर्जा की बर्बादी है। सर्दियों के लिए 1500 डब्ल्यू हीटर खरीदना बेहतर है, बहुत सस्ता।

वे सिर्फ एक बड़े कोर के साथ एक सीपीयू क्यों नहीं बनाते हैं?

मुझे लगता है कि अगर वे आठ कोर वाले सीपीयू के बराबर एक कोर बनाते हैं, तो एक कोर में आईपीसी में 800% की वृद्धि होगी, इसलिए आपको सभी कार्यक्रमों में पूरा प्रदर्शन मिलेगा, न कि उन लोगों के लिए जो कई कोर के लिए अनुकूलित हैं। अधिक IPC हर जगह प्रदर्शन बढ़ाते हैं, यह प्रदर्शन बढ़ाने के लिए विश्वसनीय और सरल तरीका है। एकाधिक कोर केवल सीमित संख्या में कार्यक्रमों में प्रदर्शन बढ़ाते हैं, और स्केलिंग भयानक और अविश्वसनीय है।


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है । किसी भी निष्कर्ष पर पहुंचे प्रश्न और / या किसी भी उत्तर में वापस संपादित किया जाना चाहिए।
डेव ट्वीड

आपको इस लेख में रुचि हो सकती है: gotw.ca/publications/concurrency-ddj.htm
lvella

"लेकिन 16 कोर से अधिक कोर का लाभ वास्तव में खराब हो जाता है" आप स्पष्ट रूप से नहीं जानते कि आप किस बारे में बात कर रहे हैं। मेरा विश्वास करो, मैंने उन प्रक्रियाओं पर काम किया है जो कुछ दसियों हज़ारों सीपीयू पर चलती हैं। समस्या का एक पूरा वर्ग है, जिसे "Embarrassately parallelisable" कहा जाता है, जहाँ समस्या पर अधिक कोर फेंकना बहुत अच्छी तरह से काम करता है।
एरन

जवाबों:


93

समस्या इस धारणा के साथ है कि सीपीयू निर्माता केवल एक परिणाम के बिना एक सीपीयू कोर को अधिक शक्तिशाली बनाने के लिए अधिक ट्रांजिस्टर जोड़ सकते हैं।

सीपीयू को अधिक करने के लिए, आपको यह योजना बनानी होगी कि अधिक क्या करना है। वास्तव में तीन विकल्प हैं:

  1. एक उच्च घड़ी आवृत्ति पर कोर रन बनाएं - इसके साथ परेशानी यह है कि हम पहले से ही हम क्या कर सकते हैं की सीमाओं को मार रहे हैं।

    बिजली का उपयोग और इसलिए थर्मल अपव्यय आवृत्ति के साथ बढ़ता है - यदि आप आवृत्ति को दोगुना करते हैं तो आप नाममात्र शक्ति को दोगुना कर देते हैं। यदि आप वोल्टेज बढ़ाते हैं तो आपकी शक्ति का अपव्यय वोल्टेज के वर्ग के साथ बढ़ जाता है।

    दुनिया के गैर-आदर्श प्रकृति के कारण इंटरकनेक्ट और ट्रांजिस्टर का भी प्रसार में देरी है। आप सिर्फ ट्रांजिस्टर की संख्या नहीं बढ़ा सकते हैं और एक ही घड़ी की आवृत्ति पर चलने में सक्षम होने की उम्मीद करते हैं।

    हम बाहरी हार्डवेयर द्वारा भी सीमित हैं - मुख्य रूप से RAM। सीपीयू को तेज बनाने के लिए, आपको मेमोरी बैंडविड्थ को बढ़ाना होगा, या तो इसे तेजी से चलाकर, या डेटा बस की चौड़ाई बढ़ाकर।


  1. अधिक जटिल निर्देश जोड़ें - तेजी से चलने के बजाय, हम अधिक समृद्ध अनुदेश सेट जोड़ सकते हैं - एन्क्रिप्शन जैसे सामान्य कार्यों को सिलिकॉन में कठोर किया जा सकता है। सॉफ्टवेयर में गणना करने के लिए कई घड़ी चक्र लेने के बजाय, हमारे पास हार्डवेयर अभिवृद्धि है।

    यह पहले से ही कॉम्प्लेक्स इंस्ट्रक्शन सेट (CISC) प्रोसेसर पर किया जा रहा है। SSE2, SSE3 जैसी चीजें देखें। एक सिंगल सीपीयू कोर आज से 10 साल पहले के सीपीयू कोर की तुलना में कहीं अधिक शक्तिशाली है, भले ही उसी घड़ी की आवृत्ति पर चलाया जाए।

    परेशानी यह है, जैसा कि आप अधिक जटिल निर्देश जोड़ते हैं, आप अधिक जटिलता जोड़ते हैं और चिप को बड़ा बनाते हैं। एक प्रत्यक्ष परिणाम के रूप में सीपीयू धीमा हो जाता है - प्रचार की देरी के रूप में अस्वीकार्य घड़ी आवृत्तियां गिरती हैं।

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

    आप एक बार में अधिक डेटा संसाधित करने के लिए डेटा बस की चौड़ाई को बड़ा बना सकते हैं, लेकिन फिर से यह CPU को बड़ा बनाता है और आप बड़ी डेटा बसों के माध्यम से प्राप्त थ्रूपुट और घड़ी की दर को छोड़ने के बीच एक व्यापार हिट करते हैं। यदि आपके पास केवल छोटा डेटा (जैसे 32-बिट पूर्णांक) है, तो 256-बिट CPU होने से वास्तव में आपकी मदद नहीं होती है।


  1. सीपीयू को अधिक समानांतर बनाएं - एक काम को तेजी से करने की बजाय, एक ही समय में कई काम करें। यदि आप जो कार्य कर रहे हैं, वह एक समय में कई चीजों पर काम करने के लिए उधार देता है, तो आप या तो एक एकल सीपीयू चाहते हैं जो प्रति निर्देश कई गणनाएं कर सकते हैं (एकल निर्देश एकाधिक डेटा (SIMD)), या कई CPU जो प्रत्येक कर सकते हैं गणना।

    यह मल्टी-कोर सीपीयू के लिए महत्वपूर्ण ड्राइवरों में से एक है। यदि आपके पास कई कार्यक्रम चल रहे हैं, या अपने एकल कार्यक्रम को कई कार्यों में विभाजित कर सकते हैं, तो कई सीपीयू कोर होने से आप एक ही बार में अधिक काम कर सकते हैं।

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

    जैसे कि क्या एक एकल कार्यक्रम कई कोर होने से लाभ उठा सकता है, यह पूरी तरह से उस कार्यक्रम के लिए नीचे है, और यह कैसे लिखा गया था।


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है । किसी भी निष्कर्ष पर पहुंचे प्रश्न और / या किसी भी उत्तर में वापस संपादित किया जाना चाहिए।
डेव ट्वीड

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

1
एक और अधिक सटीक उत्तर के लिए पढ़ा sciencedirect.com/topics/computer-science/...
टोनी स्टीवर्ट Sunnyskyguy EE75

37

अन्य उत्तरों के अलावा, एक और तत्व है: चिप की पैदावार । एक आधुनिक प्रोसेसर में कई बिलियन ट्रांजिस्टर होते हैं, जिनमें से प्रत्येक ट्रांजिस्टर को पूरी तरह से ठीक से काम करने के लिए पूरी तरह से काम करना पड़ता है।

मल्टी-कोर प्रोसेसर बनाकर, आप सफाई से ट्रांजिस्टर के समूहों को विभाजित कर सकते हैं। यदि एक दोष में से एक में मौजूद है, तो आप उस कोर को अक्षम कर सकते हैं , और कार्यशील कोर की संख्या के अनुसार कम कीमत पर चिप बेच सकते हैं । इसी तरह, आप सिस्टम को मान्य घटकों से बाहर भी इकट्ठा कर सकते हैं जैसे कि एसएमपी सिस्टम में।

वस्तुतः आपके द्वारा खरीदे जाने वाले प्रत्येक सीपीयू के लिए, उस प्रोसेसर लाइन के लिए एक शीर्ष-अंत प्रीमियम मॉडल बनने के लिए जीवन शुरू किया गया था। आप किस चीज के साथ समाप्त होते हैं, इस बात पर निर्भर करता है कि उस चिप के कौन से हिस्से गलत और अक्षम काम कर रहे हैं। इंटेल कोई i3 प्रोसेसर नहीं बनाता है: वे सभी दोषपूर्ण i7 हैं, सभी सुविधाओं के साथ जो उत्पाद लाइनों को अलग करती हैं क्योंकि वे परीक्षण में विफल रहे। हालाँकि, जो हिस्से अभी भी काम कर रहे हैं वे अभी भी उपयोगी हैं और इन्हें बहुत सस्ते में बेचा जा सकता है। कुछ भी बदतर चाबी का गुच्छा trinkets बन जाता है।

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

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


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

4
इंटेल ने अपने कुछ चिप्स के लिए दोहरे कोर का निर्माण किया है। अपने सभी ULV (अल्ट्रालो वोल्टेज) मोबाइल SKU के दोहरे-कोर होने के साथ, पर्याप्त दोषपूर्ण क्वाड-कोर नहीं थे, और छोटे मरने वाले क्षेत्र (विशेष रूप से एक कट-डाउन iGPU के साथ) वेफर के साथ अधिक काम करने वाले दोहरे कोर चिप्स देता है क्वाड-कोर बंद फ्यूजिंग से मर जाता है। en.wikichip.org/wiki/intel/microaltectures/… सैंडिब्रिज 131- मी bridge डाई आकार के दोहरे-कोर + जीटी 1 ग्राफिक्स, 149 मिमी² दोहरे-कोर + जीटी 2 ग्राफिक्स + 216 मिमी क्वाड + जीटी 2 के डाई-शॉट हैं। कैश आदि में दोषों के लिए अभी भी जगह है
पीटर कॉर्ड्स

और (कुछ) FMA इकाई के हिस्से में दोष संभवतः इसे बंद करके और इसे Celeron या Pentium चिप (कोई AVX, इसलिए केवल 128-बिट वैक्टर) के रूप में बेचकर संभाला जा सकता है। यहां तक ​​कि आधुनिक Skylake या Coffee Lake Pentium चिप्स में AVX का अभाव है। । SIMD FMA इकाइयाँ एक कोर का एक अच्छा हिस्सा बनाती हैं (और पूर्णांक mul और पूर्णांक बदलाव सहित FP गणित के अलावा कई SIMD चलाती हैं), इसलिए मुझे आश्चर्य नहीं होगा अगर 2x 256-बिट FMA इकाइयों को मैप किया जा सकता है 2x 128-बिट का उपयोग करते हुए जो भी 2 हिस्सा अभी भी काम कर रहे हैं। Skylake Xeon के साथ, वहाँ भी कम AVX512 FMA थ्रूपुट (केवल 1 कार्य 512-बिट FMA) के साथ SKU हैं
पीटर कॉर्ड्स

@PeterCordes यदि पैदावार अच्छी मिलती है, तो विक्रेताओं उच्च घनत्व और / या तेज घड़ी दर (और इसलिए उच्च दोष दर) डिजाइन लाएंगे, जब तक कि दोष दरें वापस नहीं मिल जाती हैं जहां वे कोर और / या चिप्स को अंडर-क्लॉक कर सकते हैं बेचने के लिए छूट ..
मोंटी हार्डर

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

26

डेटा निर्भरता

चिप को "व्यापक" बनाकर प्रति घड़ी अधिक निर्देश जोड़ना काफी आसान है - यह "SIMD" दृष्टिकोण रहा है। समस्या यह है कि यह ज्यादातर मामलों का उपयोग करने में मदद नहीं करता है।

स्वतंत्र और आश्रित दो तरह के कार्यभार हैं। एक स्वतंत्र कार्यभार का एक उदाहरण "संख्या A1, A2, A3 ... और B1, B2, ... आदि के दो क्रम दिए जा सकते हैं, गणना (A1 + B1) और (A2 + B2) आदि"। इस तरह के वर्कलोड को कंप्यूटर ग्राफिक्स, ऑडियो प्रोसेसिंग, मशीन लर्निंग, और इसी तरह से देखा जाता है। इसमें से बहुत सारे जीपीयू को दिए गए हैं, जो विशेष रूप से इसे संभालने के लिए डिज़ाइन किए गए हैं।

एक आश्रित कार्यभार हो सकता है "ए को देखते हुए, इसमें 5 जोड़ें और इसे एक तालिका में देखें। परिणाम लें और इसमें 16 जोड़ दें। एक अलग तालिका में देखें।"

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

ऊर्जा प्रबंधन

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

सॉफ़्टवेयर को फिर से लिखना एकमात्र तरीका है

हार्डवेयर स्वचालित रूप से निर्भर वर्कलोड को स्वतंत्र वर्कलोड में परिवर्तित नहीं कर सकता है। न ही सॉफ्टवेयर कर सकते हैं। लेकिन एक प्रोग्रामर जो बहुत सारे कोर का फायदा उठाने के लिए अपने सिस्टम को नया स्वरूप देने के लिए तैयार है।


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

1
लेकिन सत्ता के मामले में भी ए भी कोर की अधिकतम घड़ी प्रसार देरी की तुलना में थर्मल मोरेसो द्वारा सीमित है (हालांकि शायद पाइपलाइन चरण की सीमाओं का चयन किया जाता है ताकि आप लक्ष्य अधिकतम टर्बो पर उस सीमा के करीब हों)। और वोल्टेज एक चर भी है: बदतर शक्ति लेकिन कम गेट देरी। तो वैसे भी, सिंगल-कोर अधिकतम टर्बो पर विचार करने का कोई मतलब नहीं है क्योंकि आप "को" सभी कोर को चलाने में सक्षम होना चाहिए, क्योंकि यह सीमा पहले से ही शक्ति से आती है।
पीटर कॉर्ड्स

मूल प्रश्न का संदर्भ निश्चित रूप से सिंगल-कोर अधिकतम गति के बारे में पूछ रहा था, और कई व्यावहारिक उद्देश्यों के लिए (और इसके कैश की याद आती है) उपयोगकर्ता के लिए गति की गति के लिए वास्तविक सीमित कारक है।
pjc50

हां, हम सभी 8-कोर सीपीयू के बजाय 8x सिंगल-थ्रेड प्रदर्शन ले सकते हैं यदि हम कर सकते हैं। (एसएमटी के साथ इसे संदर्भ-स्विच ओवरहेड के बिना स्वाभाविक रूप से-अलग-अलग वर्कलोड चलाने देने के लिए। मेरा जवाब देखें। :) एक काल्पनिक सुपर-वाइड कोर शायद खुद को तेजी से घड़ी कर पाएगा जब वर्कलोड ने सभी को रखने के बजाय बहुत सारे स्टालों का कारण बना। SIMD FMA इकाइयों में ट्रांजिस्टर हर घड़ी चालू और स्विच होता है। ( सिंगल कोर के भीतर पावर गेटिंग भी उच्च घड़ियों पर पिघलने की कुंजी नहीं है; en.wikipedia.org/wiki/Dark_silicon )। तो एक भी व्यापक कोर होने से यह अलग नहीं होगा।
पीटर कॉर्डेस

हालाँकि, आपके पास एक बिंदु है कि हम वर्तमान सीपीयू पर जो एकल-थ्रेडेड प्रदर्शन देखते हैं, उससे बेहतर है कि वे एक घड़ी की गति तक सीमित थे कि वे सभी कोर पर एक साथ काम कर सकते थे, यहां तक ​​कि सबसे खराब स्थिति में भी। यानी टर्बो प्रमुख है, विशेष रूप से लैपटॉप चिप जैसे कम-टीडीपी भागों के लिए ( क्यों मेरा सीपीयू एचपीसी में पीक प्रदर्शन को बनाए नहीं रख सकता है ): आमतौर पर बेसलाइन और अधिकतम टर्बो के बीच एक बड़ा अनुपात उच्च-शक्ति लेकिन कम-कोर-गिनती डेस्कटॉप चिप्स के विपरीत होता है , जैसे i7-6700k Skylake 4GHz बेस है, 4.2GHz सिंगल-कोर टर्बो (ओवरक्लॉकिंग के बिना; 95W TDP के साथ उच्च संभव है)।
पीटर कॉर्ड्स

20

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

मुसीबत यह है कि, यह धारणा (अस्थायी रूप से) गलत थी। आप एक प्रोसेसर को और अधिक गणना करके अधिक प्रसंस्करण शक्ति प्राप्त कर सकते हैं। इंटेल और एएमडी ने घड़ी की गति को कभी भी अधिक बढ़ाने के तरीके ढूंढे, और जैसा कि आप कहते हैं, यह एक प्रोसेसर पर सब कुछ रखने के लिए आसान है। नतीजा यह हुआ कि 2000 के दशक के मध्य तक, तेज सिंगल-कोर प्रोसेसर के पास बाजार था। 90 के दशक की शुरुआत में इनमोस की मृत्यु हो गई, और उनके सभी अनुभव उनके साथ मर गए।

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

बेशक सुधार के अन्य विकल्प भी हैं - आप इसके बजाय अधिक कुशल हो सकते हैं। SIMD और समान निर्देश सेट समान संख्या में घड़ी की टिक के लिए अधिक प्रसंस्करण करते हैं। DDR आपके डेटा को प्रोसेसर से तेज़ी से बाहर और बाहर करता है। यह सब मदद करता है। लेकिन जब यह प्रसंस्करण की बात आती है, तो हम 80 के दशक में वापस आ जाते हैं और फिर से कई कोर होते हैं।


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है । किसी भी निष्कर्ष पर पहुंचे प्रश्न और / या किसी भी उत्तर में वापस संपादित किया जाना चाहिए।
डेव ट्वीड

20

अच्छा सवाल, या कम से कम एक दिलचस्प जवाब के साथ। इस उत्तर का एक हिस्सा एक ऐसी दुनिया की छवि देता है जहां सीपीयू कई अलग-अलग कोर के साथ चौड़ाई में कुशलता से स्केल कर सकता है । लाइसेंस / मूल्य मॉडल अलग होगा!

बाकी बताते हैं कि वे क्यों नहीं कर सकते। सारांश:

  • कई कोर पैमाने की लागत रैखिक रूप से करीब है
  • 1 कोर के सुपरस्क्लेयर पाइपलाइन के तराजू को चौड़ा करने की लागत ~ चतुर्थांश यह पर्याप्त ब्रूट-बल के साथ, एक बिंदु तक किसी भी तरह से संभव है। एकल-थ्रेडेड प्रदर्शन इंटरैक्टिव उपयोग (एंड-टू-एंड लेटेंसी मामलों, न केवल थ्रूपुट के लिए) के लिए बहुत महत्वपूर्ण है, इसलिए वर्तमान बड़े-कोर हाई-एंड सीपीयू उस कीमत का भुगतान करते हैं। जैसे स्काइलेक (4-चौड़ा), रायज़ेन (5 या 6-चौड़ा), और ऐप्पल ए 12 (बड़े कोर के लिए 7-चौड़ा, छोटी ऊर्जा कुशल कोर के लिए 3-चौड़ा)
  • गंभीर ह्रासमान आईपीसी सिर्फ पाइप लाइन को चौड़ा से रिटर्न परे 3 या 4 चौड़ा, यहां तक कि बाहर के आदेश निष्पादन के साथ खोजने के लिए आईएलपी । ब्रांच मिस और कैश मिस कठिन हैं, और फिर भी पूरी पाइपलाइन को रोकती हैं।
  • आपने आवृत्ति का उल्लेख नहीं किया, बस IPC, लेकिन स्केलिंग आवृत्ति भी कठिन है। उच्च आवृत्ति के लिए उच्च वोल्टेज की आवश्यकता होती है, इसलिए आवृत्ति क्यूब के साथ पावर स्केल : ^1आवृत्ति से सीधे, और ^2वोल्टेज से। (कैपेसिटर को वी ^ 2 के साथ ऊर्जा तराजू संग्रहीत किया जाता है, और रिसाव चालू से परे अधिकांश गतिशील शक्ति एफईटी गेट्स + तारों के कैपेसिटिव भार में पंपिंग चार्ज से होती है।)

    प्रदर्शन = आवृत्ति बार आईपीसी। (एक ही आर्किटेक्चर के भीतर। विडर SIMD आपको कम निर्देशों के साथ समान काम करने देता है, और कुछ ISAs दूसरों की तुलना में सघन होते हैं, जैसे MIPS अक्सर x86 या AArch64 की तुलना में समान कार्य करने के लिए अधिक निर्देश लेता है।)

लागत मर-क्षेत्र (विनिर्माण लागत) और / या शक्ति में है (जो कि अप्रत्यक्ष रूप से आवृत्ति को सीमित करता है क्योंकि शीतलन कठिन है)। इसके अलावा, प्रति वाट कम शक्ति और प्रदर्शन अपने आप में एक लक्ष्य है, विशेष रूप से मोबाइल (बैटरी) और सर्वर (पावर घनत्व / शीतलन लागत / लागत लागत) के लिए।

मल्टी-कोर प्रति सॉकेट एक चीज होने से पहले, आपके पास उच्च-अंत उपयोग के मामलों के लिए मल्टी-सॉकेट सिस्टम थे जहां आप एक सीपीयू के साथ प्राप्त करने की तुलना में अधिक थ्रूपुट चाहते थे जो निर्मित हो सकते थे, इसलिए वे केवल एसएमपी सिस्टम थे। (सर्वर, हाई-एंड वर्कस्टेशन)।

यदि आप चाहते हैं कि एक भी कोर कुशलता से स्केल कर सकता है, तो हमारे पास 1 भौतिक कोर प्रति सॉकेट और एसएमटी (जैसे हाइपरथ्रेडिंग) के साथ सिस्टम होंगे ताकि उन्हें कई तार्किक कोर के रूप में कार्य करने दिया जा सके। विशिष्ट डेस्कटॉप / लैपटॉप में केवल 1 भौतिक कोर होगा, और हम उन चीजों को समानांतर करने के लिए संघर्ष नहीं करेंगे जो अधिक कोर के साथ रैखिक रूप से पैमाने पर नहीं करते हैं। जैसे make -j4मल्टी सॉकेट सर्वर का लाभ उठाना, और / या डेस्कटॉप पर I / O विलंबता को छिपाना। (या हो सकता है कि हम अभी भी बहुत कुछ समानांतर करने की कोशिश करेंगे अगर पाइपलाइन की चौड़ाई आसानी से बढ़ जाए लेकिन आईपीसी नहीं था, इसलिए हमें अधिक एसएमटी थ्रेड्स का उपयोग करना पड़ा।) आपके ओएस कर्नेल को तब भी सभी तार्किक कोर में चलाने की आवश्यकता होगी, जब तक कि सीपीयू जिस तरह से नहीं। ओएस के लिए एसएमटी प्रस्तुत करना बहुत अलग था, इसलिए समानांतर शेड्यूलिंग एल्गोरिदम और लॉकिंग की अभी भी वहां आवश्यकता होगी।


डोनाल्ड नुथ ने 2008 के एक साक्षात्कार में कहा

मैं मल्टीकोर आर्किटेक्चर की ओर वर्तमान रुझान के साथ अपनी व्यक्तिगत नाखुशी के बारे में अच्छी तरह जान सकता हूं। मेरे लिए, यह कमोबेश ऐसा लगता है जैसे हार्डवेयर डिज़ाइनर विचारों से बाहर हो गए हैं, और वे मूर के कानून के भविष्य के निधन का दोष सॉफ्टवेयर लेखकों को देने की कोशिश कर रहे हैं। मुख्य बेंचमार्क!

हां, अगर हम वास्तविक कार्यक्रमों पर 8x थ्रूपुट के साथ चमत्कार सिंगल-कोर सीपीयू कर सकते हैं, तो हम शायद अभी भी उनका उपयोग कर रहे हैं। दोहरे सॉकेट सिस्टम के साथ केवल जब यह अधिक थ्रूपुट (एकल-थ्रेडेड प्रदर्शन नहीं) के लिए बहुत अधिक भुगतान करने के लायक था।

मल्टीपल सीपीयू संदर्भ-स्विच की लागत को कम कर देता है जब कई प्रोग्राम चल रहे होते हैं (उनके बीच तेजी से स्विच करने के बजाय वास्तव में समानांतर में चलने देते हैं); इस तरह के एक सीपीयू के लिए बड़े पैमाने पर आउट-ऑफ-ऑर्डर मशीनरी को बाधित करने वाले पूर्व-खाली मल्टीटास्किंग को संभवतः अब इससे भी अधिक चोट लगी होगी।

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

तो आप कई थ्रेड्स का उपयोग करेंगे जब यह वास्तव में आसान / प्राकृतिक था (उदाहरण के लिए एक बार चलने वाली अलग-अलग प्रक्रियाएं), या निर्भरता श्रृंखलाओं के साथ आसानी से समानांतर समस्याओं के लिए जो इस जानवर के आईपीसी को अधिकतम करने से रोकेंगे।

लेकिन दुर्भाग्य से यह नथ के हिस्से पर इच्छाधारी सोच है कि मल्टी-कोर सीपीयू कभी भी इस बिंदु पर होना बंद हो जाएगा।


एकल-थ्रेड प्रदर्शन स्केलिंग

मुझे लगता है कि अगर उन्होंने 8 कोर सीपीयू के 1 कोर के बराबर बनाया, तो एक कोर में आईपीसी में 800% की वृद्धि होगी, इसलिए आपको सभी कार्यक्रमों में पूर्ण प्रदर्शन मिलेगा, न कि उन लोगों के लिए जो कई कोर के लिए अनुकूलित हैं।

हाँ यह सच है। यदि इस तरह के सीपीयू को बिल्कुल भी बनाना संभव था , तो यह बहुत आश्चर्यजनक होगा। लेकिन मुझे लगता है कि एक ही सेमीकंडक्टर निर्माण प्रक्रिया (यानी ट्रांजिस्टर की समान गुणवत्ता / दक्षता) पर यह सचमुच असंभव है। यह निश्चित रूप से एक ही पावर बजट और मरने वाले क्षेत्र के साथ 8-कोर सीपीयू के रूप में संभव नहीं है, भले ही आप तर्क को गोंद कोर पर सहेज लेंगे, और प्रति-कोर निजी कैश के लिए अधिक स्थान की आवश्यकता नहीं होगी।

यहां तक ​​कि अगर आप आवृत्ति में वृद्धि की अनुमति देते हैं (चूंकि वास्तविक मानदंड प्रति सेकंड काम है, प्रति घड़ी काम नहीं करता है), यहां तक ​​कि एक 2x तेजी से सीपीयू बनाना एक बड़ी चुनौती होगी।

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

आधुनिक माइक्रोप्रोसेसर देखें 90-मिनट गाइड!

विशेष रूप से अधिक कोर या वाइडर कोर? अनुभाग, इस उत्तर को समझने के लिए आवश्यक पृष्ठभूमि के लिए; यह सरल शुरू होता है कि किस प्रकार से क्रमबद्ध सीपीयू काम करता है, फिर सुपरसेलकर (प्रति घड़ी कई निर्देश)। फिर समझाता है कि हमने पी 4 युग के चारों ओर बिजली की दीवार को कैसे मारा, जिससे आसान आवृत्ति स्केलिंग समाप्त हो जाती है, ज्यादातर आईपीसी को छोड़ दिया जाता है और प्रति निर्देश के अनुसार अधिक काम किया जाता है (उदाहरण के लिए SIMD), छोटे ट्रांजिस्टर के साथ भी।

पाइप लाइन को व्यापक (अधिकतम निर्देश प्रति घड़ी) बनाना आमतौर पर चौड़ाई-वर्ग के रूप में लागत में होता है । व्यापक क्षेत्र पर निर्भरता की जाँच (खतरा का पता लगाना) और चलाने के लिए तैयार निर्देशों को खोजने के लिए एक व्यापक आउट-ऑफ-ऑर्डर अनुसूचक के लिए उस लागत को डाई क्षेत्र और / या शक्ति में मापा जाता है। और अधिक पढ़ें / अपने रजिस्टर फ़ाइल पर बंदरगाहों लिखने और कैश अगर आप के अलावा अन्य निर्देश चलाना चाहते हैं nop। खासकर यदि आपके पास 3-इनपुट निर्देश जैसे एफएमए या ऐड-ऑन-कैरी (2 रजिस्टर + झंडे) हैं।

सीपीसी को व्यापक बनाने के लिए आईपीसी रिटर्न भी कम हैं ; अधिकांश वर्कलोड में सीपीयू के शोषण के लिए छोटे पैमाने पर / छोटी दूरी की ILP (इंस्ट्रक्शन-लेवल समानांतरता) सीमित है, इसलिए कोर को व्यापक बनाने से IPC (प्रति घड़ी निर्देश) नहीं बढ़ता है अगर IPC पहले से ही चौड़ाई से कम तक सीमित है निर्भरता श्रृंखला, शाखा छूट, कैश मिस, या अन्य स्टालों द्वारा कोर। सुनिश्चित करें कि आपको स्वतंत्र पुनरावृत्तियों के साथ कुछ अनियंत्रित छोरों में स्पीडअप मिलेगा, लेकिन ऐसा नहीं है कि अधिकांश कोड अपना अधिकांश समय खर्च करते हैं। तुलना / शाखा निर्देशों को "विशिष्ट" कोड, IIRC में अनुदेश मिश्रण का 20% बनाते हैं। (मुझे लगता है कि मैंने विभिन्न डेटा सेटों के लिए 15 से 25% तक संख्याएं पढ़ ली हैं।)

इसके अलावा, एक कैश मिस जो सभी आश्रित निर्देशों (और फिर सब कुछ एक बार आरओबी क्षमता तक पहुंच जाता है) को एक व्यापक सीपीयू के लिए अधिक खर्च करता है। (अधिक निष्पादन इकाइयों को बेकार छोड़ने का अवसर लागत; अधिक संभावित काम पूरा नहीं हो रहा है।) या एक शाखा याद आती है इसी तरह एक बुलबुले का कारण बनता है।

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


आउट-ऑफ-ऑर्डर निष्पादन सीपीयू के निर्माण के लिए वर्तमान तकनीक केवल कम सीमाओं पर आईएलपी पा सकती है । उदाहरण के लिए, स्काईलेक का आरओबी आकार 224 फ़्यूज़-डोमेन यूप्स है, गैर-निष्पादित यूओपी के लिए शेड्यूलर 97 अप्रयुक्त-डोमेन है। देखें , दो लंबी निर्भरता श्रृंखला के साथ एक पाश पर lfence के प्रभाव को समझना लंबाई बढ़ाने के लिए एक मामले में जहां अनुसूचक आकार निर्देश के 2 लंबी श्रृंखला से आईएलपी निकालने में सीमित कारक है, अगर वे मिल के लिए भी लंबे समय तक। और / या इसे और अधिक सामान्य और परिचयात्मक उत्तर देखें )।

तो दो अलग-अलग लंबी छोरों के बीच ILP खोजना कुछ ऐसा नहीं है जिसे हम हार्डवेयर के साथ कर सकते हैं। पाश संलयन के लिए गतिशील बाइनरी-पुनर्सकुलेशन कुछ मामलों में संभव हो सकता है, लेकिन हार्ड और कुछ सीपीयू वास्तव में तब तक नहीं कर सकते जब तक कि वे ट्रांसमेटा क्रूसेओ मार्ग पर न जाएं। (एक अलग आंतरिक ISA के शीर्ष पर x86 एमुलेशन परत; उस मामले में VLIW)। लेकिन यूओपी कैश और शक्तिशाली डिकोडर के साथ मानक आधुनिक x86 डिजाइन अधिकांश कोड के लिए हरा करना आसान नहीं है।

और x86 के बाहर, अभी भी उपयोग में आने वाले सभी ISAs को डिकोड करना अपेक्षाकृत आसान है, इसलिए लंबी दूरी की अनुकूलन के अलावा गतिशील-पुनर्संयोजन के लिए कोई प्रेरणा नहीं है। TL: DR: मैजिक कंपाइलर के लिए उम्मीद करना जो कि अधिक ILP को हार्डवेयर में उजागर कर सकता है, Itanium IA-64 के लिए काम नहीं करता है , और निष्पादन के एक सीरियल मॉडल के साथ किसी भी मौजूदा ISA के लिए सुपर-वाइड CPU के लिए काम करने की संभावना नहीं है।


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

चूंकि स्काइलेक वर्तमान में 4 यूपी चौड़ा है (और प्रति घड़ी 2 से 3 यूओपी का वास्तविक आईपीसी प्राप्त करता है, या यहां तक ​​कि उच्च-थ्रूपुट कोड में 4 के करीब), एक काल्पनिक 8x व्यापक सीपीयू 32-चौड़ा होगा!

होने के नाते 8 या 16 तार्किक सीपीयू में गतिशील रूप से उन निष्पादन संसाधनों को साझा करने में सक्षम होने के नाते : गैर-थ्रेडेड थ्रेड्स सभी फ्रंट-एंड बैंडविड्थ और बैक-एंड थ्रूपुट प्राप्त करते हैं।

लेकिन 8 अलग-अलग कोर के साथ, जब एक थ्रेड स्टॉल होता है, तो निष्पादन इकाइयों को खिलाया रखने के लिए और कुछ नहीं होता है; अन्य धागे लाभ नहीं देते हैं।

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


लेकिन हमारे पास जादुई सुपर-वाइड सीपीयू नहीं हो सकते हैं

इसलिए थ्रूपुट हासिल करने के लिए हमें थ्रेड-लेवल समानता के रूप में हार्डवेयर के समानांतर समानता को उजागर करना होगा । आमतौर पर कंपाइलर यह जानने में महान नहीं होते हैं कि थ्रेड्स का उपयोग कब / कैसे करना है, बहुत बड़े लूप जैसे सरल मामलों के अलावा। (OpenMP, या gcc का -ftree-parallelize-loops)। यह अब भी समानांतर रूप से उपयोगी कार्य करने के लिए कोड को फिर से लागू करने के लिए मानवीय चतुराई लेता है, क्योंकि अंतर-थ्रेड संचार महंगा है, और इसलिए थ्रेड स्टार्टअप है।

TLP मोटे दानेदार समानता है, ठीक अनाज वाले ILP के विपरीत निष्पादन के एक एकल धागे के साथ जो HW का शोषण कर सकता है।


इंटरैक्टिव वर्कलोड (जैसे इंटेल / एएमडी x86, और Apple / ARM AArch64 हाई-एंड कोर) के उद्देश्य से सीपीयू निश्चित रूप से आईपीसी स्केलिंग के कम रिटर्न में धक्का देते हैं, क्योंकि एकल-थ्रेडेड प्रदर्शन अभी भी विलंबता के मामले में इतना मूल्यवान है, न कि केवल थ्रूपुट के लिए व्यापक रूप से समानांतर समस्याएं।

15fps पर समानांतर में एक गेम की 8 प्रतियां चलाने में सक्षम होने के कारण प्रत्येक 45fps पर एक कॉपी चलाने में सक्षम होने की तुलना में बहुत कम मूल्यवान है। सीपीयू विक्रेताओं को यह पता है, और यही कारण है कि आधुनिक सीपीयू आउट-ऑफ-ऑर्डर निष्पादन का उपयोग करते हैं, भले ही यह महत्वपूर्ण शक्ति और मरने के क्षेत्र में खर्च हो। (लेकिन GPUs नहीं है क्योंकि उनके काम का बोझ पहले से ही बड़े पैमाने पर समानांतर है)।

इंटेल के कई-कोर Xeon Phi हार्डवेयर (नाइट की लैंडिंग / नाइट के मिल) एक दिलचस्प आधे रास्ते के बिंदु हैं: बहुत ही सीमित आउट-ऑफ-ऑर्डर निष्पादन और एसएमटी को AVX512 SIMD निर्देशों के साथ क्रंच संख्याओं के लिए खिलाए गए 2-वाइड कोर रखने के लिए। कोर इंटेल के लो-पावर सिल्वरमोंट आर्किटेक्चर पर आधारित हैं। (आउट-ऑफ-ऑर्डर निष्पादन लेकिन एक छोटी सी पुन: व्यवस्थित खिड़की के साथ, बड़े-कोर सैंडब्रिज-परिवार की तुलना में बहुत छोटा है। और एक संकीर्ण पाइपलाइन।)


BTW, यह सब SIMD का ऑर्थोगोनल है। प्रति निर्देश के अनुसार अधिक काम करना हमेशा मदद करता है, अगर यह आपकी समस्या के लिए संभव है।


मूल्य निर्धारण मॉडल

हार्डवेयर के वर्तमान परिदृश्य पर सॉफ्टवेयर मूल्य निर्धारण मॉडल की भविष्यवाणी की जाती है।

मल्टी-कोर सीपीयू के आगमन के साथ प्रति-कोर लाइसेंसिंग मॉडल अधिक व्यापक (और एकल-सॉकेट डेस्कटॉप के लिए भी प्रासंगिक) बन गए। इससे पहले, यह केवल सर्वर और बड़े वर्कस्टेशन के लिए प्रासंगिक था।

यदि सॉफ़्टवेयर को शीर्ष गति पर चलने के लिए एकाधिक कोर की आवश्यकता नहीं होती है, तो वास्तव में इसे उन लोगों को सस्ता बेचने का कोई तरीका नहीं होगा, जिन्हें इससे उतना लाभ नहीं मिल रहा है क्योंकि वे इसे कमजोर CPU पर चलाते हैं। जब तक कि सॉफ्टवेयर / हार्डवेयर इकोसिस्टम "एसएमटी चैनलों" पर नियंत्रण विकसित नहीं करता है जो आपको उस तार्किक कोर पर चलने वाले कोड के लिए अधिकतम निष्पादन चौड़ाई को कॉन्फ़िगर करने देता है। (फिर से एक ऐसी दुनिया की कल्पना करें जहां CPU अलग-अलग कोर के बजाय पाइपलाइन चौड़ाई में बड़े पैमाने पर हो।)


2
"थ्रेड स्टार्टअप महंगा है" - यह एक कठिन तथ्य नहीं है; यह आम आधुनिक ऑपरेटिंग सिस्टम की एक कलाकृति है।
एमएसएल

1
@MSalters और वास्तव में, कुछ शोध परियोजनाओं ने पता लगाया है कि यह दृष्टिकोण कितना भयानक होगा। "मानव चतुरता को कोड को फिर से संगठित करने के लिए" के साथ ही - कोड लिखने के तरीके हैं जो स्वाभाविक रूप से समानांतर करने के लिए आसान हैं, वे पिछले कुछ दशकों में बहुत लोकप्रिय नहीं हुए हैं। जहां वे कर रहे हैं प्रयोग किया जाता है, तो आप आम तौर पर बहुत कम कीमत पर बड़े पैमाने पर क्षैतिज स्केलिंग देख सकते हैं; वास्तव में, इस बिंदु पर कि क्षैतिज स्केलिंग कई अनुप्रयोगों में ऊर्ध्वाधर से कहीं अधिक सस्ता होने लगी है। इसका मतलब यह है कि आपको डेवलपर्स को विकल्प नहीं देना चाहिए - यदि परिस्थितियां इसे मजबूर करती हैं, तो यह ठीक काम करता है: डी
लुआण

11

मुझे एक सादृश्य आकर्षित करने दें:

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

इसलिए यदि आप अधिक टाइपिंग करना चाहते हैं, तो आपको अधिक बंदर प्राप्त करने होंगे।


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


7

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

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

वर्तमान में 8 कोर के थ्रूपुट से मेल खाने के लिए केवल एक कोर की गति को बढ़ाना संभव नहीं है। नई वास्तुकला से और अधिक गति आने की संभावना है।

जैसा कि अधिक कोर आमतौर पर उपलब्ध हैं और एपीआई उस धारणा के साथ डिज़ाइन किए गए हैं, प्रोग्रामर आमतौर पर अधिक कोर का उपयोग करना शुरू कर देंगे। बहु-थ्रेडेड डिज़ाइन बनाने में आसान बनाने के प्रयास चल रहे हैं। यदि आप कुछ वर्षों में यह प्रश्न पूछते हैं, तो आप शायद कहेंगे "मेरे खेल केवल 32 कोर का उपयोग करते हैं, इसलिए सीपीयू में 256 क्यों है?"।


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

दुर्भाग्य से कोई भी अभी तक एक ही चौड़े / तेज कोर को चलाने के लिए एक तरीका नहीं है, जो किसी भी जगह पर एक एकल-थ्रेडेड प्रोग्राम को जितनी तेजी से पास कर सकता है, हम कई कोर में चलाने के लिए कुशलता से समानांतर कोड प्राप्त कर सकते हैं। लेकिन सौभाग्य से सीपीयू डिजाइनरों को पता चलता है कि एकल-थ्रेडेड प्रदर्शन अभी भी महत्वपूर्ण है और प्रत्येक व्यक्ति की कोर को बहुत बड़ा और अधिक शक्तिशाली बनाता है यदि वे समानांतर समस्याओं पर शुद्ध थ्रूपुट के लिए जा रहे थे। (एक स्काईलेक (4-वाइड) या राइज़ेन (5-वाइड) बनाम एक कोर की एक्सोन फी (नाइट की लैंडिंग / नाइट की चक्की सिल्वरमोंट + एवीएक्स 512 पर आधारित) (2-वाइड और सीमित ओओओआर निष्पादन) की तुलना करें
पीटर कॉर्ड

2
वैसे भी हाँ, कम से कम 2 कोर होना अक्सर मल्टीटास्किंग ओएस के लिए मददगार होता है, लेकिन एक कोर पर 4 इंच या 8x का एक पूर्ववर्ती मल्टी-टास्किंग एक मौजूदा सीपीयू जितना तेज़ होगा उतना अच्छा होगा। कई इंटरएक्टिव उपयोग-मामलों के लिए, जो बेहतर होगा, अगर यह एक ही बिजली के बजट के साथ / बिलकुल संभव हो। (डुअल कोर संदर्भ-स्विच की लागत को कम करने में मदद करता है जब कई कार्य सीपीयू समय चाहते हैं, हालांकि।)
पीटर कॉर्ड्स

1
सभी सच, लेकिन ऐतिहासिक रूप से मल्टी-कोर अधिक महंगा था। विज्ञान अनुप्रयोगों के समानांतर एल्गोरिदम को डिज़ाइन करने का बहुत कारण नहीं था। एल्गोरिदम में भी समानांतर रूप से बहुत अधिक जगह है, जिसमें ज्यादातर सीरियल निष्पादन की आवश्यकता होती है। लेकिन वर्तमान पीढ़ी आईपीसी महान नहीं है और गड़बड़ करना आसान है। जो आम तौर पर उन बगों में परिणत होता है जो वास्तव में खोजने और ठीक करने में कठिन होते हैं। बेशक एक 4x तेज CPU अद्भुत होगा (लेकिन आप अभी भी कई कोर चाहते हैं)।
Hekete

2
@PeterCordes खैर, सबसे एल्गोरिदम और कार्यक्रमों क्योंकि वे धारावाहिक नहीं हैं है हो सकता है, लेकिन ज्यादातर क्योंकि यह जिस तरह से यह हमेशा किया गया है (के छिड़काव के साथ "यह एक अच्छा व्यापार बंद था")। सबसे अहम् मामले ऐसे हैं जहाँ आप एक ही प्रोग्राम को चार अलग-अलग वर्कलोड पर चार बार चला सकते हैं और उन्हें बिना किसी समस्या के समानांतर चलाया जा सकता है। लेकिन यह एक और समस्या है - सीपीयू अक्सर एक अड़चन नहीं है, और आमतौर पर इसके आसपास का तरीका बेहतर एल्गोरिदम का उपयोग करना है, न कि अधिक सीपीयू। कभी-कभी वे अन्य बाधाओं के साथ भी मदद करते हैं (मेमोरी, डिस्क, नेटवर्क ...)।
लुआं

3

एक ऐतिहासिक दृष्टिकोण से सबसे सम्मोहक कारण, शक्ति अपव्यय है

पेंटियम IV के बाद, इंटेल ने अगली पीढ़ी के प्रोसेसर कोड-नाम वाले तेजस को आगे बढ़ाने की कोशिश की, जिसे 4 गीगाहर्ट्ज से 12 गीगाहर्ट्ज़ रेंज में चलाया जाना था। समस्या यह थी कि उस गति से चलने से व्यवहार्य होने के लिए बहुत अधिक गर्मी उत्पन्न होती थी।

तेजस के रद्द होने के बाद इंटेल को एक और 10 से 15 साल लग गए, इससे पहले कि वे अंत में 4 गीगाहर्ट्ज पर स्वीकार्य स्तर के साथ चल रहे थे।

देख तेजस और जयहॉक को

इंटेल में तेजस के समानांतर एक और परियोजना थी जिसमें कई कोर का उपयोग किया गया था। उस परियोजना में गर्मी के स्वीकार्य स्तर थे, इसलिए वे जिस तरह से चले गए। इसने उन्हें 10 एनएम निर्माण प्रक्रियाओं के लिए 10 साल की प्रतीक्षा करने के बजाय अब प्रदर्शन बढ़ाने की अनुमति दी।

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

इसका एक चरम उदाहरण मानव मस्तिष्क है, जो केवल 20 डब्ल्यू शक्ति का उपयोग करके 2 ^ 18 संचालन प्रति सेकंड के बराबर प्रदर्शन कर सकता है। यह केवल कुछ सौ हर्ट्ज पर समानांतर में चल रहे अरबों न्यूरॉन्स का उपयोग करके इसे प्राप्त करता है।

यह भी ध्यान रखें कि एक पीसी पर एक बार में सैकड़ों या हजारों धागे चल रहे होते हैं। ऑपरेटिंग सिस्टम प्रत्येक थ्रेड को कोर पर समय आवंटित करने का काम करता है। इसलिए, भले ही एक व्यक्तिगत कार्यक्रम सभी कोर का लाभ नहीं उठाता है, फिर भी यह लाभान्वित होता है क्योंकि अन्य प्रोग्राम इसके CPU समय से कम ले रहे हैं यदि वे किसी अन्य कोर पर चलते हैं।

यदि कुछ भी हो, तो उच्च निष्पादन बाजार FPGAs के रूप में अधिक समानांतर प्रसंस्करण की ओर बढ़ रहा है। Intel ने हाल ही में Altera (दूसरा सबसे बड़ा FPGA निर्माता) खरीदा है और अब उन पर FPGA हार्डवेयर त्वरक के साथ बोर्ड बेच रहा है। API कॉल का उपयोग करके सॉफ्टवेयर रन-टाइम पर FPGA को लोड कर सकता है। CPU तब FPGA में डेटा फीड करता है और उसे अधिकांश काम करने देता है। अनुप्रयोगों के प्रकार आम तौर पर वीडियो एन्कोडिंग, एआई, प्रतिपादन, डेटाबेस खोज, आदि हैं।


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

और BTW, ओपी (किसी कारण के लिए) पूरी तरह से आवृत्ति छोड़ दिया, और प्रति सेकंड IPC (निर्देश प्रति घड़ी चक्र) स्केलिंग के बारे में पूछा। आप जो कहते हैं वह सच है, लेकिन वे सीपीयू को व्यापक बनाने का प्रस्ताव कर रहे थे , उच्चतर नहीं। मैंने पहले ही अपने जवाब में संबोधित किया है, इसलिए आवृत्ति के साथ पावर स्केलिंग की व्याख्या करने वाला आपका उत्तर एक अच्छा जोड़ है, +1।
पीटर कॉर्ड्स

@PeterCordes यह सही है, मेरा तात्पर्य यह नहीं है कि सभी धागे एक ही बार में निष्पादित होते हैं, निश्चित रूप से मोड़ लेते हैं। स्पष्टीकरण देने के लिए धन्यवाद।
user4574

खैर इतना "ले" मुड़ता नहीं है क्योंकि वे ज्यादातर समय चलने के लिए तैयार नहीं होते हैं। वे ज्यादातर सभी सो रहे हैं, आमतौर पर केवल गणना के एक छोटे से फटने के लिए जागते हैं जैसे कि ओएस के बाद भी एक कीपर या एक नेटवर्क पढ़ने वाले को बचाता है, या एक टाइमर समाप्त हो जाने के कारण उन्हें जगाता है। यह 2 से अधिक बार एक साथ जागृत होने के लिए दुर्लभ है, जब तक कि आप वास्तव में कम्प्यूटेशनल रूप से गहन कुछ नहीं कर रहे हैं। और यदि आप हैं, तो आप सैकड़ों धागे शुरू नहीं करते हैं, आप कई थ्रेड शुरू करते हैं ~ = उपलब्ध कोर की संख्या।
पीटर कॉर्ड्स

2

बस तस्वीर को गोल करने के लिए जहां यह सब चल रहा है ...

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

और एक तरफ के रूप में, गेमिंग पीसी की तरह कुछ में ग्राफिक्स कार्ड में मल्टीकोर इंटेल या एएमडी सीपीयू की तुलना में कहीं अधिक कच्चा प्रदर्शन होता है


2
पुन "... स्वाभाविक रूप से बड़े पैमाने पर समानांतर" : यहां तक ​​कि शर्मनाक समानांतर ?
पीटर मोर्टेंसन

1

मौलिक रूप से, सीएमओएस नुकसान तेजी से (^ 1.5) हैं आवृत्ति और समानांतर सीपीयू प्रदर्शन के अनुपात आनुपातिक रूप से सीपीयू की संख्या के अनुपात से कुछ कम हैं।

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

यह इससे कहीं अधिक जटिल है, लेकिन ये बुनियादी बातें हैं कि समानांतर सीपीयू गतिशील अनुप्रयोगों में प्रति वाट बेहतर धमाकेदार क्यों हैं। एक परिदृश्य के लिए अनुकूलित किए जाने पर हमेशा अपवाद होंगे।

यह एक बड़े सीपीयू का आकार नहीं है जो इसे इंटेल / एएमडी ठेठ पीसी अनुप्रयोगों के लिए तेज़ बनाता है, बल्कि यह लिथोग्राफिक रिज़ॉल्यूशन और निचले गेट कैपेसिटेंस से कम आकार है जो कम उप-दहलीज स्तर और कोर वोल्टेज के साथ-साथ शक्ति को कम करता है।

सुधार रैखिक नहीं है और इसका मतलब यह नहीं है कि 8 कोर 2 की तुलना में 4 गुना बेहतर है, लेकिन अगर लक्ष्य को पूरा किया जाता है, तो प्रदर्शन, दक्षता और चरम शक्ति दोनों को बेहतर बनाने के लिए बिजली अपव्यय, गति और वोल्टेज के थ्रॉटलिंग के साथ अधिक प्रसंस्करण गतिशील सीमा होती है, बिना मांग के अत्यधिक तापमान में वृद्धि।

अधिक वैज्ञानिक उत्तर के लिए पढ़ें https://www.sciencedirect.com/topics/computer-science/dynamic-power-nonsonsption


-2

मल्टीकोर्स आमतौर पर मल्टीस्कूलर नहीं होते हैं। और बहुसांस्कृतिक कोर बहुविध नहीं हैं।

यह कई मेगाहर्ट्ज़ पर चलने वाले एक बहु-स्तरीय वास्तुकला को खोजने के लिए सही होगा, लेकिन सामान्य तौर पर इसके पुल उपभोक्ता-सक्षम नहीं होंगे, लेकिन महंगी इसलिए उच्च घड़ी की गति पर कम निर्देशों के बजाय कम आवृत्ति पर प्रवृत्ति मल्टीकोर प्रोग्रामिंग है।

एकाधिक अनुदेश कोर सस्ता और कमांड करने में आसान होते हैं, और यही कारण है कि यह कई गिगाहर्ट्ज़ में एक बहुसांस्कृतिक आर्किटेक्चर होने का एक बुरा विचार है।


1
क्या आपका मतलब है "सुपरस्लेकर", प्रति घड़ी कई निर्देश? अधिकांश बहु-कोर सीपीयू हैं superscalar। उदाहरण के लिए Ryzen 5-चौड़ा है। Apple के हाई-एंड AAr6464 चिप 6 या 8-वाइड हैं। ज्यादातर कोड में शोषण के लिए 2-वाइड सीपीयू के लिए बहुत कम-लटका हुआ फल है, इसलिए यह प्रत्येक कोर को स्केल करने से पहले कम से कम 2-चौड़ा बनाने के लायक है, प्रत्येक को अपने निजी कैश की आवश्यकता होती है, और कोर के बीच एक इंटरकनेक्ट होता है ( उदाहरण के लिए इंटेल के Xeon Phi के कई-कोर कंप्यूट कार्ड में कई दोहरे मुद्दे कोर हैं)। स्मार्टफोन कोर के लिए भी: छोटे कोर कम से कम 2-वाइड हैं। एकल-थ्रेडेड प्रदर्शन मामले!
पीटर कॉर्ड्स

1
या क्या आपका मतलब है dl.acm.org/citation.cfm?id=224451 - एक शोध पत्र, जिसे वे "मल्टीसेलर" कोर कहते हैं, जो एक उच्च-स्तरीय कार्यक्रम के नियंत्रण-प्रवाह ग्राफ में बड़ी रेंज पर ILP की तलाश करता है, का उपयोग करते हुए। HW और SW का संयोजन। मुख्यधारा के सीपीयू जो हम डेस्कटॉप और स्मार्टफोन में इस्तेमाल करते हैं, वे इस तरह के नहीं होते हैं , वे आउट-ऑफ-ऑर्डर निष्पादन के साथ सिर्फ साधारण सुपरसेलकर होते हैं, धारावाहिक आईएसए को लागू करते हैं जो एक समय में निर्देश चलाने का दिखावा करते हैं।
पीटर कॉर्ड्स

धन्यवाद। afaik, स्केलर आर्च के पीछे का विचार निर्देशों के ज्ञात या पूर्वनिर्धारित सेट (AVV के मामले) के पीछे गर्मी की औसतता है। <br/> वर्तमान आर्किटेक्चर की गणना बनाम गर्मी को इंगित किया जाता है कि वह कम्प्यूटेशनल रूप से अनुमानित नहीं है। यह अक्षमता को बढ़ाता है मल्टीकोर्स बड़ी आवृत्तियों पर चल सकते हैं क्योंकि एक समय / गर्मी आदर्श में प्रदर्शन करने की उनकी क्षमता कम्प्यूटेबल नहीं है। यह सब मुझे अब तक पता है। मैं "मल्टीकेलर" के भौतिकी को समझने के उद्देश्य से वेक्टर मशीनों की खुदाई कर रहा हूं। मामला xeon / phy एक आदर्श थर्मल वक्र का पालन करता है जैसे कि प्राचीन cpus ने किया था। ग्राहक अनुभव को बढ़ाने
machtur

AVD जैसे SIMD इंस्ट्रक्शंस-सेट्स पूरी पाइपलाइन को व्यापक बनाने के बिना पाइपलाइन के माध्यम से अधिक काम पाने का एक तरीका है , बस निष्पादन इकाइयाँ। उदाहरण के लिए, स्काईलेक vpaddd ymm0, ymm1, ymm2प्रति घड़ी 3 निर्देश चला सकता है , हर एक 8 पैक 32-बिट पूर्णांक परिवर्धन कर रहा है। तो 24 पूर्णांक प्रति घड़ी जोड़ता है लेकिन आउट-ऑफ-ऑर्डर निष्पादन मशीनरी "केवल" को उड़ान में 3 निर्देशों का ट्रैक रखना है। यह सीपीयू की तुलना में बहुत सस्ता है जो add eax, edxप्रति घड़ी 24 निर्देश चला सकता है । SIMD मूल रूप से पाइपलाइन चौड़ाई के लिए रूढ़िवादी है।
पीटर कॉर्ड्स

स्काइलेक प्रति घड़ी चक्र अनुकूलन का एक अच्छा मामला है। वैरिएंट में मैं नहीं हूँ, जो कि आंतरिक बस अनुकूलन के दिलचस्प मामले हैं क्योंकि रोशनदान XDon मूल ऑफ़लोडिंग को उस तरह से SIMD पाइपलाइन में एकीकृत करते हैं। मुझे लगता है कि एक बड़ा कोर कुछ चक्रों में उतार-चढ़ाव और गणना को एकीकृत करेगा (उदाहरण के लिए) फिनोम एवीएक्स के लिए करता है। यह तरीका है जिस तरह से गणना ने आंतरिक ब्लॉक संचालन के लिए आवश्यक शक्ति बनाम आगे एकीकृत किया है। Gpu की तरह कई छोटे निर्देशों के लिए oposite के रूप में कई "आभासी" के साथ नेहल के परिवर्धन के समान कोर
नेहल के
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.