एक प्रोसेसर अपनी आवृत्ति से अधिक IPS को कैसे निष्पादित कर सकता है? [डुप्लिकेट]


14

यह कुछ ऐसा है जो मैं अपने सिर को चारों ओर लपेटने के लिए नहीं देख सकता हूं। बस के बारे में हर आधुनिक प्रोसेसर अपनी आवृत्ति की तुलना में प्रति सेकंड अधिक निर्देशों को निष्पादित करने में सक्षम है।

मैं समझ सकता हूं कि निम्न श्रेणी के प्रोसेसर अपनी आवृत्ति से कम IPS को क्यों निष्पादित कर सकते हैं। उदाहरण के लिए, ATmega328 16 MHZ के बारे में 16 MHZ (या कम से कम जो मुझे बताया गया है) पर अमल करता है , और Z80 4 MHz पर 0.5 MIPS निष्पादित करता है। लेकिन फिर पेंटियम 4 एक्सट्रीम केवल 3.2 गीगाहर्ट्ज़ पर 9 से अधिक जीआईपीएस निष्पादित कर सकता है। यह प्रति घड़ी चक्र के बारे में तीन निर्देश है!

यह कैसे किया जाता है, और यह एवीआर माइक्रोकंट्रोलर जैसे छोटे प्रोसेसर में क्यों लागू नहीं किया जाता है?

मुझे यहाँ से ATmega328 को छोड़कर अपनी सभी जानकारी मिली ।


3
पाइप लाइनिंग, सुपर स्केलर आर्किटेक्चर, ऑर्डर निष्पादन से बाहर, एक साथ मल्टीथ्रेडिंग, मल्टी कोर, वेक्टर एक्सटेंशन (एसएसई, ..., एवीएक्स), कैशिंग और जैसे बज़ शब्दों के लिए विकिपीडिया पर एक नज़र डालें। सभी सीपीआई मूल्य में कम हो सकते हैं तो 1.0।
पैबेल्स जू

7
आपके पास पेंटियम 4 के लिए 9 GIPS का मतलब MIPS नहीं था, है ना?
कैलिमो

5
स्व-प्रचार: एक सीपीयू प्रति चक्र एक से अधिक निर्देश कैसे दे सकता है? इलेक्ट्रिकल इंजीनियरिंग स्टैक एक्सचेंज पर पूछा गया था (मेरा उत्तर स्वीकार किया गया था और शायद बहुत उत्थान किया गया था)।
पॉल ए। क्लेटन

मुझे हमेशा आश्चर्य होता है, क्या मुझे कुछ वोट नहीं देना चाहिए अगर यह पहले से ही उतना ऊंचा है जितना मुझे लगता है कि यह होना चाहिए? या हमेशा मुझे लगता है अगर मुझे लगता है कि एक पोस्ट का प्रयास और गुणवत्ता एक पुरस्कार के हकदार हैं?
पीटर कॉर्ड्स

@PeterCordes अलग-अलग वोटिंग दर्शन हैं। कुछ दावा "उपयोगी" एकमात्र मानदंड है, अन्य सापेक्ष योग्यता (उत्तरों के लिए) पर विचार करते हैं । मैं निरपेक्ष मतगणना ("अच्छा", "अच्छा", "महान" पोस्ट बैज जैसे कि इस पर विचार किया जाना चाहिए) के साथ-साथ रिश्तेदार वोट काउंट (जो उत्तर रैंकिंग में मदद करता है) पर विचार करता हूं। हैरानी की बात है कि Meta.SE के पास इस विषय पर बहुत कुछ नहीं है और " मुझे कैसे वोट देना चाहिए? " का भी जवाब नहीं है!
पॉल ए। क्लेटन

जवाबों:


23

यह आधुनिक प्रोसेसर की सुविधाओं के संयोजन के कारण है।

उच्च IPS में योगदान देने वाली पहली बात यह है कि आधुनिक प्रोसेसर में कई निष्पादन इकाइयाँ हैं जो स्वतंत्र रूप से काम कर सकती हैं। नीचे दी गई छवि में ( विकिपीडिया: इंटेल कोर माइक्रोआर्किटेक्चर से उधार लिया गया ) आप नीचे देख सकते हैं कि आठ निष्पादन इकाइयाँ (पीले रंग में दर्शायी गई) हैं जो सभी निर्देशों को समवर्ती रूप से निष्पादित कर सकती हैं। उन सभी इकाइयां एक ही प्रकार के निर्देश को सुरक्षित नहीं कर सकती हैं, लेकिन उनमें से कम से कम 5 एक ALU ऑपरेशन कर सकते हैं और तीन SSB सक्षम इकाइयाँ हैं।

यहां छवि विवरण दर्ज करें

कम्बाइन कि एक लंबे साथ निर्देश पाइपलाइन जो कुशलता से ढेर निर्देश (निर्देशों पर अमल करने के लिए उन इकाइयों के लिए तैयार कर सकते हैं आदेश से बाहर , यदि आवश्यक हो) का अर्थ है एक आधुनिक प्रोसेसर किसी भी समय पर मक्खी पर दिए गए निर्देशों की एक बड़ी संख्या हो सकता है।

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

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

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

वे एक छोटे प्रोसेसर को बड़े प्रोसेसर के रूप में जटिल बना सकते हैं और एक समान प्रदर्शन प्राप्त कर सकते हैं, लेकिन फिर पावर ड्रॉ और कूलिंग आवश्यकताओं को तेजी से बढ़ाया जाएगा।


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

1
यदि आप एक सुपरस्क्लर प्रोसेसर चाहते हैं, तो एक का उपयोग करें। लेकिन Arduinos उन लोगों के लिए एक जगह पर कब्जा कर लेते हैं जो सुपरसैलर प्रोसेसर की शक्ति और शीतलन आवश्यकताओं (और लागत और जटिलता) पर ध्यान देते हैं।
डेविड श्वार्ट्ज

4

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

खुद को समझाने की कोशिश करने से बेहतर, यहाँ एक अच्छा शुरुआती बिंदु है


3

मोकूबाई के उत्तर की तुलना में थोड़ा अधिक मौलिक पाने के लिए:

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

विशिष्ट x86 डेस्कटॉप सीपीयू प्रत्येक घड़ी चक्र के निर्देशों का 16 या 32B प्राप्त करते हैं। Core2 के बाद से Intel डिज़ाइन प्रति चक्र में 4 निर्देश जारी कर सकते हैं। (या 5, यदि कोई तुलना-और-शाखा है जो मैक्रो-फ़्यूज़ हो सकती है)।

Mobukai के लिंक और विवरण के लिए अच्छा जवाब देखें कि व्यवहार में सीपीयू कितने अनुदेश-स्तरीय समानता को निकालने के कार्य के बारे में जाते हैं, क्योंकि वे उस कोड से चलते हैं जो वे चलाते हैं।

इसके अलावा http://www.realworldtech.com/sandy-bridge/ और अन्य सीपीयू आर्किटेक्चर के लिए इसी तरह के लेखों में देखें कि हुड के नीचे क्या है।


-2

पिछले उत्तरों से पता चलता है कि प्रोसेसर को "निर्देश" की परिभाषा से अधिक निर्देश कैसे निष्पादित होते हैं और एक कल्पना करता है कि वास्तव में प्रश्नकर्ता का इरादा क्या है।

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

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


सीपीयू वास्तव में कैसे काम करता है, इसके बारे में थोड़ा सा करीब है, लेकिन प्रति चक्र कई मशीन इंसन्स प्राप्त करना केवल एक सुपरसक्लोरिक सीपीयू कैसे काम करता है, इसका एक हिस्सा है। (और औसत इन्सान की लंबाई x86 के लिए 4 बाइट्स की तरह अधिक होती है।) गहरी पाइपलाइनों का मतलब है कि अब लाए जा रहे निर्देश 15 चक्रों (या बहुत लंबे समय तक, अगर कैश मिस के द्वारा पकड़े गए हों, लेकिन गैर-निर्भर निर्देश नहीं दे सकते हैं) निष्पादित करते रहें।) आपकी व्याख्या में एक पाइपलाइननुमा डिज़ाइन का वर्णन नहीं है। यह भी स्पष्ट नहीं है कि आपको क्या लगता है कि अंतर 8bit 8086 add al, blऔर 80386 के बीच है add eax, ebx
पीटर कॉर्डेस

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.