उच्च प्रदर्शन देने के लिए एक प्रोसेसर डिज़ाइन करना केवल घड़ी की दर बढ़ाने से कहीं अधिक है। प्रदर्शन बढ़ाने के कई अन्य तरीके हैं, जो मूर के नियम और आधुनिक प्रोसेसर के डिजाइन में सहायक हैं।
घड़ी की दरें अनिश्चित काल तक नहीं बढ़ सकती हैं।
पहली नज़र में, ऐसा लग सकता है कि एक प्रोसेसर एक के बाद एक निर्देशों की एक धारा को निष्पादित करता है, उच्च घड़ी की दरों के माध्यम से प्रदर्शन में वृद्धि होती है। हालाँकि, अकेले घड़ी की दर बढ़ाना पर्याप्त नहीं है। घड़ी की दरें बढ़ने के साथ बिजली की खपत और गर्मी का उत्पादन बढ़ता है।
बहुत अधिक घड़ी दरों के साथ, सीपीयू कोर वोल्टेज में महत्वपूर्ण वृद्धि आवश्यक हो जाती है। क्योंकि टीडीपी वी कोर के वर्ग के साथ बढ़ता है , हम अंततः एक बिंदु तक पहुंचते हैं जहां अत्यधिक बिजली की खपत, गर्मी उत्पादन, और शीतलन आवश्यकताएं घड़ी दर में और वृद्धि को रोकती हैं। यह सीमा 2004 में पेंटियम 4 प्रेस्कॉट के दिनों में पहुंच गई थी । जबकि बिजली दक्षता में हाल के सुधारों ने मदद की है, घड़ी दर में उल्लेखनीय वृद्धि संभव नहीं है। देखें: सीपीयू निर्माताओं ने अपने प्रोसेसर की घड़ी की गति को क्यों रोक दिया है?
वर्षों में अत्याधुनिक उत्साही पीसी में स्टॉक घड़ी की गति का ग्राफ। छवि स्रोत
- मूर के कानून के माध्यम से , एक अवलोकन जो बताता है कि एक एकीकृत सर्किट पर ट्रांजिस्टर की संख्या हर 18 से 24 महीने में दोगुनी हो जाती है, मुख्य रूप से डाई सिकुड़ने के परिणामस्वरूप , प्रदर्शन बढ़ाने वाली विभिन्न तकनीकों को लागू किया गया है। इन तकनीकों को पिछले कुछ वर्षों में परिष्कृत और परिपूर्ण किया गया है, जिससे एक निश्चित अवधि में अधिक निर्देशों को निष्पादित किया जा सके। इन तकनीकों पर नीचे चर्चा की गई है।
लगातार अनुक्रमिक निर्देश धाराओं को अक्सर समानांतर किया जा सकता है।
- हालांकि एक कार्यक्रम में एक के बाद एक निष्पादित करने के लिए निर्देशों की एक श्रृंखला शामिल हो सकती है, इन निर्देशों, या उसके कुछ हिस्सों को अक्सर एक साथ निष्पादित किया जा सकता है। इसे निर्देश-स्तरीय समानता (ILP) कहा जाता है । उच्च प्रदर्शन प्राप्त करने के लिए आईएलपी को उजागर करना महत्वपूर्ण है, और आधुनिक प्रोसेसर ऐसा करने के लिए कई तकनीकों का उपयोग करते हैं।
पाइपलाइनिंग निर्देश को छोटे टुकड़ों में तोड़ता है जिसे समानांतर में निष्पादित किया जा सकता है।
प्रत्येक निर्देश को चरणों के अनुक्रम में तोड़ा जा सकता है, जिनमें से प्रत्येक को प्रोसेसर के एक अलग हिस्से द्वारा निष्पादित किया जाता है। निर्देश पाइपलाइनिंग कई निर्देशों को पूरी तरह से समाप्त करने के लिए प्रत्येक निर्देश की प्रतीक्षा किए बिना एक के बाद एक इन चरणों से गुजरने की अनुमति देता है। पाइपलाइनिंग उच्च घड़ी दरों को सक्षम करता है: प्रत्येक घड़ी चक्र में प्रत्येक निर्देश का एक चरण पूरा होने से, प्रत्येक चक्र के लिए कम समय की आवश्यकता होगी, यदि पूरे निर्देशों को एक समय में पूरा करना था।
क्लासिक RISC पाइपलाइन अनुदेश लाने, अनुदेश डिकोड, अनुदेश निष्पादन, स्मृति का उपयोग, और writeback: पांच चरणों में शामिल है। आधुनिक प्रोसेसर कई चरणों में निष्पादन को तोड़ते हैं, अधिक चरणों के साथ एक गहरी पाइपलाइन का निर्माण करते हैं (और प्राप्य घड़ी की दरों में वृद्धि होती है क्योंकि प्रत्येक चरण छोटा होता है और पूरा होने में कम समय लगता है), लेकिन इस मॉडल को एक बुनियादी समझ प्रदान करनी चाहिए कि पाइपलाइनिंग कैसे काम करती है।
छवि स्रोत
हालांकि, पाइपलाइनिंग खतरों को पेश कर सकती है जिन्हें सही कार्यक्रम निष्पादन सुनिश्चित करने के लिए हल किया जाना चाहिए।
क्योंकि प्रत्येक निर्देश के विभिन्न भागों को एक ही समय में निष्पादित किया जा रहा है, इसलिए संघर्षों के लिए संभव है जो सही निष्पादन में हस्तक्षेप करते हैं। इन्हें खतरा कहा जाता है । तीन प्रकार के खतरे हैं: डेटा, संरचनात्मक और नियंत्रण।
डेटा खतरे तब होते हैं जब निर्देश एक ही समय में या गलत क्रम में एक ही डेटा को पढ़ते और संशोधित करते हैं, संभवतः गलत परिणामों की ओर ले जाते हैं। संरचनात्मक खतरे तब होते हैं जब एक ही समय में कई निर्देशों को प्रोसेसर के किसी विशेष भाग का उपयोग करने की आवश्यकता होती है। नियंत्रण संबंधी खतरे तब होते हैं जब एक सशर्त शाखा निर्देश का सामना करना पड़ता है।
इन खतरों को विभिन्न तरीकों से हल किया जा सकता है। सबसे सरल उपाय पाइप लाइन को रोकना है, सही परिणाम सुनिश्चित करने के लिए अस्थायी रूप से पाइप लाइन में एक या निर्देशों के निष्पादन को रोकना। जब भी संभव हो इससे बचा जाता है क्योंकि यह प्रदर्शन को कम करता है। डेटा खतरों के लिए, स्टालों को कम करने के लिए ऑपरेंड फॉरवर्डिंग जैसी तकनीकों का उपयोग किया जाता है। नियंत्रण खतरों को शाखा भविष्यवाणी के माध्यम से नियंत्रित किया जाता है , जिसे विशेष उपचार की आवश्यकता होती है और अगले भाग में शामिल किया जाता है।
शाखा की भविष्यवाणी का उपयोग नियंत्रण खतरों को हल करने के लिए किया जाता है जो पूरी पाइपलाइन को बाधित कर सकता है।
नियंत्रण खतरे, जो तब होते हैं जब एक सशर्त शाखा का सामना करना पड़ता है, विशेष रूप से गंभीर होते हैं। शाखाएँ इस संभावना का परिचय देती हैं कि किसी विशेष स्थिति के सही या गलत होने के आधार पर, निर्देश स्ट्रीम में अगले निर्देश के बजाय निष्पादन कार्यक्रम में कहीं और जारी रहेगा।
क्योंकि निष्पादित करने के लिए अगला निर्देश तब तक निर्धारित नहीं किया जा सकता है जब तक कि शाखा की स्थिति का मूल्यांकन नहीं किया जाता है, अनुपस्थिति में शाखा के बाद किसी भी निर्देश को पाइपलाइन में डालना संभव नहीं है। इसलिए पाइपलाइन को खाली कर दिया जाता है ( फ्लश किया जाता है ) जो लगभग कई चक्रों को बेकार कर सकती है क्योंकि पाइपलाइन में चरण होते हैं। शाखाएँ अक्सर कार्यक्रमों में होती हैं, इसलिए खतरों को नियंत्रित करने से प्रोसेसर के प्रदर्शन पर गंभीर प्रभाव पड़ सकता है।
शाखा की भविष्यवाणी इस मुद्दे को संबोधित करती है कि क्या एक शाखा ली जाएगी। ऐसा करने का सबसे सरल तरीका केवल यह मान लेना है कि शाखाएं हमेशा ली जाती हैं या कभी नहीं ली जाती हैं। हालांकि, आधुनिक प्रोसेसर उच्च भविष्यवाणी सटीकता के लिए बहुत अधिक परिष्कृत तकनीकों का उपयोग करते हैं। संक्षेप में, प्रोसेसर पिछली शाखाओं पर नज़र रखता है और निष्पादन के लिए अगले निर्देश की भविष्यवाणी करने के लिए किसी भी तरीके से इस जानकारी का उपयोग करता है। फिर पाइपलाइन को भविष्यवाणी के आधार पर सही स्थान से निर्देशों के साथ खिलाया जा सकता है।
बेशक, अगर भविष्यवाणी गलत है, तो शाखा को हटाने के बाद जो भी निर्देश पाइप लाइन के माध्यम से डाले गए थे, जिससे पाइपलाइन को फ्लश किया जाए। नतीजतन, शाखा भविष्यवक्ता की सटीकता तेजी से महत्वपूर्ण हो जाती है क्योंकि पाइपलाइन लंबी और लंबी हो जाती हैं। विशिष्ट शाखा भविष्यवाणी तकनीक इस उत्तर के दायरे से परे हैं।
मेमोरी एक्सेस को तेज करने के लिए कैश का उपयोग किया जाता है।
आधुनिक प्रोसेसर निर्देशों को निष्पादित कर सकते हैं और डेटा को तेजी से संसाधित कर सकते हैं, जिससे उन्हें मुख्य मेमोरी में एक्सेस किया जा सकता है। जब प्रोसेसर को रैम का उपयोग करना चाहिए, तो डेटा उपलब्ध होने तक निष्पादन लंबे समय तक रुक सकता है। इस प्रभाव को कम करने के लिए, कैश नामक छोटे उच्च गति वाले मेमोरी प्रोसेसर को प्रोसेसर पर शामिल किया जाता है।
प्रोसेसर डाई पर सीमित स्थान उपलब्ध होने के कारण, कैश बहुत सीमित आकार के होते हैं। इस सीमित क्षमता का अधिकतम उपयोग करने के लिए, कैश केवल सबसे हाल ही में या अक्सर एक्सेस किए गए डेटा ( टेम्पोरल लोकलिटी ) को स्टोर करता है । जैसे-जैसे मेमोरी एक्सेस विशेष क्षेत्रों ( स्थानिक इलाके ) के भीतर क्लस्टर होते जाते हैं , हाल ही में एक्सेस किए जाने वाले डेटा के ब्लॉक भी कैश में जमा हो जाते हैं। देखें: संदर्भ की स्थानीयता
प्रदर्शन को अनुकूलित करने के लिए अलग-अलग आकार के कई स्तरों में कैश का आयोजन किया जाता है क्योंकि बड़े कैश छोटे कैश की तुलना में धीमा होते हैं। उदाहरण के लिए, एक प्रोसेसर में एक स्तर 1 (L1) कैश हो सकता है जो आकार में केवल 32 KB है, जबकि इसका स्तर 3 (L3) कैश कई मेगाबाइट बड़े हो सकते हैं। कैश का आकार, साथ ही कैश की संबद्धता , जो प्रभावित करती है कि प्रोसेसर पूर्ण कैश पर डेटा के प्रतिस्थापन का प्रबंधन कैसे करता है, कैश के माध्यम से प्राप्त होने वाले प्रदर्शन लाभ को महत्वपूर्ण रूप से प्रभावित करता है।
आउट-ऑफ-ऑर्डर निष्पादन पहले के निष्पादन के स्वतंत्र निर्देशों की अनुमति देकर खतरों के कारण स्टालों को कम करता है।
एक निर्देश धारा में प्रत्येक निर्देश एक दूसरे पर निर्भर नहीं करता है। उदाहरण के लिए, हालांकि a + b = c
पहले निष्पादित किया जाना चाहिए c + d = e
, a + b = c
और d + e = f
स्वतंत्र हैं और एक ही समय में निष्पादित किया जा सकता है।
आउट-ऑफ-ऑर्डर निष्पादन इस तथ्य का लाभ उठाता है कि अन्य, स्वतंत्र निर्देशों को निष्पादित करने की अनुमति देता है जबकि एक निर्देश ठप है। लॉकस्टेप में एक के बाद एक निष्पादित करने के निर्देशों की आवश्यकता के बजाय, शेड्यूलिंग हार्डवेयर को किसी भी क्रम में स्वतंत्र निर्देशों को निष्पादित करने की अनुमति देने के लिए जोड़ा जाता है। निर्देशएक कतार में भेजे जाते हैं और आवश्यक डेटा उपलब्ध होने पर प्रोसेसर के उचित भाग को जारी किए जाते हैं। इस तरह, जो निर्देश पहले के निर्देश से डेटा के लिए इंतजार कर रहे हैं, वे बाद के निर्देशों से स्वतंत्र नहीं हैं।
छवि स्रोत
- आउट-ऑफ-ऑर्डर निष्पादन करने के लिए कई नए और विस्तारित डेटा संरचनाओं की आवश्यकता होती है। उपर्युक्त निर्देश कतार, आरक्षण स्टेशन , का उपयोग निर्देशों को रखने के लिए किया जाता है जब तक कि निष्पादन के लिए आवश्यक डेटा उपलब्ध नहीं हो जाता। फिर से आदेश बफर (आरओबी) ताकि निर्देश को सही क्रम में पूरा कर रहे हैं प्रगति में दिए गए निर्देशों के राज्य का ट्रैक रखने के, जिस क्रम में वे प्राप्त हुए थे में प्रयोग किया जाता है,। एक रजिस्टर फ़ाइल जो आर्किटेक्चर द्वारा प्रदान किए गए रजिस्टरों की संख्या से परे फैली हुई है, रजिस्टर नामकरण के लिए आवश्यक है , जो अन्यथा स्वतंत्र निर्देशों को आर्किटेक्चर द्वारा प्रदान किए गए रजिस्टरों के सीमित सेट को साझा करने की आवश्यकता के कारण निर्भर होने से रोकने में मदद करता है।
Superscalar आर्किटेक्चर एक निर्देश स्ट्रीम के भीतर एक ही समय में निष्पादित करने के लिए कई निर्देशों की अनुमति देते हैं।
उपरोक्त तकनीकों पर केवल निर्देश पाइपलाइन के प्रदर्शन में वृद्धि हुई है। ये तकनीकें अकेले ही एक से अधिक निर्देशों को प्रति घड़ी चक्र पूरा करने की अनुमति नहीं देती हैं। हालांकि, अक्सर समानांतर में एक निर्देश धारा के भीतर व्यक्तिगत निर्देशों को निष्पादित करना संभव होता है, जैसे कि जब वे एक-दूसरे पर निर्भर नहीं होते हैं (जैसा कि ऊपर दिए गए आदेश निष्पादन अनुभाग में चर्चा की गई है)।
Superscalar आर्किटेक्चर एक बार में कई कार्यात्मक इकाइयों को भेजे जाने के निर्देश देकर इस निर्देश-स्तरीय समानता का लाभ उठाते हैं। प्रोसेसर में एक विशेष प्रकार की कई कार्यात्मक इकाइयाँ हो सकती हैं (जैसे पूर्णांक ALUs) और / या विभिन्न प्रकार की कार्यात्मक इकाइयाँ (जैसे फ़्लोटिंग-पॉइंट और पूर्णांक इकाइयाँ) जिनमें निर्देश समवर्ती रूप से भेजे जा सकते हैं।
सुपरस्क्लेकर प्रोसेसर में, निर्देश एक आउट-ऑफ-ऑर्डर डिज़ाइन के रूप में निर्धारित किए जाते हैं, लेकिन अब कई समस्याएँ पोर्ट हैं , जिससे एक ही समय में विभिन्न निर्देशों को जारी और निष्पादित किया जा सकता है। विस्तारित निर्देश डिकोडिंग सर्किटरी प्रोसेसर को प्रत्येक घड़ी चक्र में एक बार में कई निर्देशों को पढ़ने और उनके बीच संबंधों को निर्धारित करने की अनुमति देता है। एक आधुनिक उच्च-प्रदर्शन प्रोसेसर प्रति घड़ी चक्र के आठ निर्देशों को निर्धारित कर सकता है, जो प्रत्येक निर्देश पर निर्भर करता है। यह है कि प्रोसेसर प्रति घड़ी चक्र में कई निर्देश कैसे पूरा कर सकते हैं। देखें: आनंदटेक पर हैसवेल निष्पादन इंजन
छवि स्रोत
- हालांकि, सुपरस्केलर आर्किटेक्चर को डिजाइन और ऑप्टिमाइज़ करना बहुत मुश्किल है। निर्देशों के बीच निर्भरता की जाँच करने के लिए बहुत जटिल तर्क की आवश्यकता होती है जिसका आकार तेजी से बढ़ सकता है क्योंकि एक साथ निर्देशों की संख्या बढ़ जाती है। इसके अलावा, आवेदन के आधार पर, प्रत्येक निर्देश धारा के भीतर केवल एक सीमित संख्या में निर्देश हैं जिन्हें एक ही समय में निष्पादित किया जा सकता है, इसलिए ILP का अधिक लाभ लेने के प्रयास कम रिटर्न से पीड़ित हैं।
अधिक उन्नत निर्देश जोड़े जाते हैं जो कम समय में जटिल ऑपरेशन करते हैं।
जैसा कि ट्रांजिस्टर बजट बढ़ता है, अधिक उन्नत निर्देशों को लागू करना संभव हो जाता है जो जटिल परिचालन को उस समय के कुछ हिस्सों में निष्पादित करने की अनुमति देते हैं जो वे अन्यथा लेते हैं। उदाहरणों में SSE और AVX जैसे वेक्टर निर्देश सेट शामिल हैं जो एक ही समय में डेटा के कई टुकड़ों पर गणना करते हैं और एईएस निर्देश सेट जो डेटा एन्क्रिप्शन और डिक्रिप्शन को गति देता है ।
इन जटिल ऑपरेशनों को करने के लिए, आधुनिक प्रोसेसर माइक्रो-ऑपरेशंस (μops) का उपयोग करते हैं । जटिल निर्देशों को μops के अनुक्रमों में डिकोड किया जाता है, जो एक समर्पित बफर के अंदर संग्रहीत होते हैं और व्यक्तिगत रूप से निष्पादन के लिए निर्धारित होते हैं (डेटा निर्भरता द्वारा अनुमत सीमा तक)। यह प्रोसेसर को ILP का फायदा उठाने के लिए अधिक जगह प्रदान करता है। प्रदर्शन को और बढ़ाने के लिए, हाल ही में डिकोड किए गए μops को स्टोर करने के लिए एक विशेष μop कैश का उपयोग किया जा सकता है, ताकि हाल ही में निष्पादित निर्देशों के लिए ops को जल्दी से देखा जा सके।
हालाँकि, इन निर्देशों का जोड़ प्रदर्शन को स्वचालित रूप से बढ़ावा नहीं देता है। नए निर्देश केवल प्रदर्शन बढ़ा सकते हैं यदि कोई एप्लिकेशन उनका उपयोग करने के लिए लिखा गया हो। इन निर्देशों को अपनाने से इस तथ्य में बाधा आती है कि उनका उपयोग करने वाले एप्लिकेशन पुराने प्रोसेसर पर काम नहीं करेंगे जो उनका समर्थन नहीं करते हैं।
तो इन तकनीकों से समय के साथ प्रोसेसर के प्रदर्शन में सुधार कैसे होता है?
प्रत्येक चरण को पूरा करने के लिए समय की मात्रा को कम करने और इसलिए उच्चतर घड़ी की दरों को सक्षम करने में समय के साथ पाइपलाइनें लंबी हो गई हैं। हालांकि, अन्य बातों के अलावा, लंबी पाइपलाइन गलत शाखा की भविष्यवाणी के लिए जुर्माना बढ़ाती हैं, इसलिए पाइपलाइन बहुत लंबी नहीं हो सकती है। बहुत उच्च गति तक पहुंचने की कोशिश में, पेंटियम 4 प्रोसेसर ने बहुत लंबी पाइपलाइनों का उपयोग किया, प्रेस्कॉट में 31 चरणों तक । प्रदर्शन की कमी को कम करने के लिए, प्रोसेसर निर्देशों को निष्पादित करने की कोशिश करेगा भले ही वे विफल हों, और जब तक वे सफल नहीं हो जाते तब तक प्रयास करते रहेंगे । इससे बहुत अधिक बिजली की खपत हुई और हाइपर-थ्रेडिंग से प्राप्त प्रदर्शन में कमी आई । नए प्रोसेसर अब लंबे समय तक पाइपलाइनों का उपयोग नहीं करते हैं, खासकर जब से घड़ी की दर स्केलिंग एक दीवार तक पहुंच गई है;हैसवेल एक पाइपलाइन का उपयोग करता है जो 14 और 19 चरणों के बीच भिन्न होता है, और कम-शक्ति वाले आर्किटेक्चर छोटी पाइपलाइनों का उपयोग करते हैं (इंटेल एटम सिल्वरमोंट में 12 से 14 चरण होते हैं)।
शाखा की भविष्यवाणी की सटीकता में अधिक उन्नत आर्किटेक्चर के साथ सुधार हुआ है, जो गलतफहमी के कारण पाइप लाइन के फ्लश की आवृत्ति को कम करता है और अधिक निर्देशों को समवर्ती रूप से निष्पादित करने की अनुमति देता है। आज के प्रोसेसर में पाइपलाइनों की लंबाई को देखते हुए, यह उच्च प्रदर्शन बनाए रखने के लिए महत्वपूर्ण है।
बढ़ते ट्रांजिस्टर बजट के साथ, बड़े और अधिक प्रभावी कैश प्रोसेसर में एम्बेडेड हो सकते हैं, मेमोरी एक्सेस के कारण स्टालों को कम कर सकते हैं। मेमोरी एक्सेस को आधुनिक सिस्टम पर पूरा करने के लिए 200 से अधिक चक्रों की आवश्यकता हो सकती है, इसलिए जितना संभव हो मुख्य मेमोरी तक पहुंचने की आवश्यकता को कम करना महत्वपूर्ण है।
नए प्रोसेसर अधिक उन्नत सुपरस्लेकर निष्पादन तर्क और "व्यापक" डिज़ाइनों के माध्यम से ILP का लाभ उठाने में सक्षम हैं जो अधिक निर्देशों को डिकोड करने और समवर्ती रूप से निष्पादित करने की अनुमति देते हैं। Haswell वास्तुकला चार निर्देश डिकोड और घड़ी चक्र प्रति 8 सूक्ष्म संचालन प्रेषण कर सकते हैं। बढ़ती ट्रांजिस्टर बजट अधिक कार्यात्मक इकाइयों जैसे पूर्णांक ALUs को प्रोसेसर कोर में शामिल करने की अनुमति देता है। आउट-ऑफ-ऑर्डर और सुपरस्लेकर निष्पादन में उपयोग की जाने वाली प्रमुख डेटा संरचनाएं, जैसे कि आरक्षण स्टेशन, रिकॉर्डर बफर और रजिस्टर फ़ाइल, नए डिजाइनों में विस्तारित हैं, जो प्रोसेसर को अपने आईएलपी का फायदा उठाने के लिए निर्देशों की एक व्यापक खिड़की की खोज करने की अनुमति देता है। आज के प्रोसेसर में प्रदर्शन बढ़ने के पीछे यह एक प्रमुख प्रेरक शक्ति है।
नए प्रोसेसर में अधिक जटिल निर्देश शामिल हैं, और अनुप्रयोगों की बढ़ती संख्या प्रदर्शन को बढ़ाने के लिए इन निर्देशों का उपयोग करती है। संकलक प्रौद्योगिकी में उन्नति, निर्देश चयन और स्वचालित वैश्वीकरण में सुधार सहित , इन निर्देशों के अधिक प्रभावी उपयोग को सक्षम करते हैं।
उपरोक्त के अलावा, सीपीयू के बाहरी हिस्से जैसे कि नॉर्थब्रिज, मेमोरी कंट्रोलर, और पीसीआई लेन से पहले के हिस्सों का अधिक एकीकरण आई / ओ और मेमोरी लेटेंसी को कम करता है। यह अन्य उपकरणों से डेटा तक पहुँचने में देरी के कारण होने वाले स्टालों को कम करके थ्रूपुट को बढ़ाता है।