प्रारंभिक कंप्यूटर पूरी तरह से अनुक्रमिक थे। प्रोसेसर को प्राप्त होने वाले प्रत्येक निर्देश को अगले एक को शुरू करने से पहले पूर्ण रूप से पूरा करने की आवश्यकता होती है। अधिकांश निर्देशों के लिए पाँच चरण हैं: निर्देश प्राप्त करना, निर्देश डिकोड करना, निष्पादित करना, मेमोरी एक्सेस और राइटबैक। क्रमशः इन चरणों को निर्देश मिलता है जिसे पूरा करने की आवश्यकता होती है, ऑपरेशन को मूल्यों से अलग करें ऑपरेशन चालू करें, ऑपरेशन निष्पादित करें, रजिस्टर खोलें, जिस पर परिणाम लिखा जाएगा, और परिणाम को खुले में लिखें रजिस्टर करें।
इनमें से प्रत्येक चरण को पूरा करने के लिए एक चक्र लेना चाहिए। दुर्भाग्य से, यदि डेटा रजिस्टर में नहीं है, तो इसे सीपीयू कैश या सिस्टम रैम से अनुरोध किया जाना चाहिए। यह बहुत धीमा है, विलंबता के दर्जनों या सैकड़ों घड़ी चक्र जोड़ रहा है। इस बीच, बाकी सभी चीजों को प्रतीक्षा करने की आवश्यकता है क्योंकि कोई अन्य डेटा या निर्देश संसाधित नहीं किया जा सकता है। इस प्रकार के प्रोसेसर डिज़ाइन को सबस्केलर कहा जाता है क्योंकि यह प्रति घड़ी चक्र में एक से कम निर्देश चलाता है।
अदिश करने के लिए पाइपलाइनिंग
सिस्टम पाइपलाइन को लागू करके एक स्केलर प्रोसेसर प्राप्त किया जा सकता है। एक निर्देश के पांच चरणों में से प्रत्येक को वास्तविक प्रोसेसर कोर में हार्डवेयर के विभिन्न बिट्स में चलाया जाता है। इस प्रकार, यदि आप प्रत्येक चरण के लिए हार्डवेयर में फीड किए गए डेटा से सावधान हैं, तो आप उनमें से प्रत्येक को हर चक्र में व्यस्त रख सकते हैं। एक आदर्श दुनिया में, इससे 5x की गति बढ़ सकती है और प्रोसेसर पूरी तरह से अदिश हो सकता है, प्रति चक्र एक पूर्ण निर्देश चला सकता है।
वास्तव में, कार्यक्रम जटिल हैं और थ्रूपुट को कम करते हैं। उदाहरण के लिए, यदि आपके पास दो अतिरिक्त निर्देश "ए = बी + सी" और "डी = ई + एफ" हैं तो इन्हें बिना किसी समस्या के पाइपलाइन में चलाया जा सकता है। यदि, हालांकि, आपके पास "ए = बी + सी" और उसके बाद "डी = ए + ई" है तो आपको एक समस्या है। इन दो निर्देशों को सीधे एक दूसरे के बाद मानते हुए, "ए" के नए मूल्य की गणना करने की प्रक्रिया पूरी नहीं हुई है, दूसरा निर्देश "ए" के पुराने मान को पढ़ने से पहले स्मृति में वापस लिखा जाना चाहिए और फिर गलत उत्तर देता है "डी"।
इस व्यवहार का मुकाबला एक डिस्पैचर को शामिल करके किया जा सकता है, जो आगामी निर्देशों का विश्लेषण करता है और यह सुनिश्चित करता है कि कोई भी निर्देश जो दूसरे पर निर्भर है, बहुत निकट उत्तराधिकार में नहीं चलाया जाता है। यह वास्तव में इसे ठीक करने के लिए प्रोग्राम को गलत क्रम में चलाता है। यह काम करता है, क्योंकि कई निर्देश जरूरी नहीं कि पिछले एक के परिणाम पर निर्भर हों।
पाइपलाइन को सुपरस्केलर तक विस्तारित करना
एक सुपरस्केलर प्रोसेसर प्रति चक्र एक से अधिक पूर्ण निर्देश चलाने में सक्षम है। ऐसा करने का एक तरीका पाइपलाइन का विस्तार करना है ताकि हार्डवेयर के दो या दो से अधिक बिट्स हों जो प्रत्येक चरण को संभाल सकें। इस तरह प्रत्येक चक्र में पाइपलाइन के प्रत्येक चरण में दो निर्देश हो सकते हैं। यह स्पष्ट रूप से बढ़ी हुई डिज़ाइन जटिलता का परिणाम है क्योंकि हार्डवेयर को डुप्लिकेट किया गया है, हालांकि, यह उत्कृष्ट प्रदर्शन स्केलिंग संभावनाएं प्रदान करता है।
बढ़ती पाइपलाइनों से प्रदर्शन में वृद्धि केवल अब तक कुशलता से होती है। थर्मल और आकार की बाधाएं कुछ सीमाएं रखती हैं। महत्वपूर्ण शेड्यूलिंग जटिलताएं भी हैं। एक कुशल डिस्पैचर अब और भी महत्वपूर्ण हो गया है क्योंकि उसे यह सुनिश्चित करना होता है कि निर्देशों के दो सेटों में से कोई भी अन्य निर्देशों के संसाधित होने के परिणाम पर निर्भर नहीं करता है।
एक शाखा भविष्यवक्ता डिस्पैचर का एक हिस्सा है जो अधिक से अधिक महत्वपूर्ण हो जाता है जितना अधिक उच्च सुपरस्केलर एक प्रोसेसर होता है। कुछ निर्देशों के दो संभावित परिणाम हो सकते हैं, जिनमें से प्रत्येक के परिणामस्वरूप अलग-अलग निर्देश हो सकते हैं। एक साधारण उदाहरण "if" कथन होगा। "अगर यह सच है तो ऐसा करो, नहीं तो यह दूसरा काम करो"। एक शाखा भविष्यवक्ता एक शाखा संचालन के परिणाम की भविष्यवाणी करने का प्रयास करता है। यह तब पूर्व-खाली रूप से शेड्यूल करता है और निर्देशों का पालन करता है जो इसे संभावित परिणाम मानता है।
आधुनिक शाखा भविष्यवाणियों में बहुत सारे जटिल तर्क हैं, जिसके परिणामस्वरूप शाखा भविष्यवाणी सफलता दर 98% के क्रम में हो सकती है। एक सही भविष्यवाणी उस समय को बचाती है जो वास्तविक परिणाम की प्रतीक्षा में बर्बाद हो सकता था, एक गलत भविष्यवाणी की आवश्यकता होती है कि भविष्यवाणी की गई निर्देश और उनके किसी भी परिणाम को खारिज कर दिया जाता है और उनके स्थान पर सही निर्देश चलाए जाते हैं, जो कि सिर्फ होने पर थोड़ा सा दंड के साथ आता है प्रतीक्षा की। इस प्रकार उच्च-पूर्वानुमान सफलता दर प्रदर्शन को उल्लेखनीय रूप से बढ़ा सकती है।
निष्कर्ष
एक कंप्यूटर प्रोसेसर को सुपरस्केलर माना जाता है यदि वह प्रति घड़ी चक्र में एक से अधिक निर्देश निष्पादित कर सकता है। प्रारंभिक कंप्यूटर पूरी तरह से अनुक्रमिक थे, एक समय में केवल एक निर्देश चला रहे थे। इसका मतलब था कि प्रत्येक निर्देश को पूरा करने में एक से अधिक चक्र लगे और इसलिए ये प्रोसेसर सबस्केलर थे। एक बुनियादी पाइपलाइन जो निर्देश के प्रत्येक चरण के लिए चरण-विशिष्ट हार्डवेयर के उपयोग को सक्षम बनाता है, प्रति घड़ी चक्र में अधिकतम एक निर्देश निष्पादित कर सकता है, जिससे यह स्केलर बन जाता है।
यह ध्यान दिया जाना चाहिए कि एक घड़ी चक्र में कोई भी व्यक्तिगत निर्देश पूरी तरह से संसाधित नहीं होता है। इसमें अभी भी कम से कम पांच चक्र लगते हैं। हालाँकि, कई निर्देश एक साथ पाइपलाइन में हो सकते हैं। यह प्रति चक्र एक या अधिक पूर्ण निर्देशों के थ्रूपुट की अनुमति देता है।
सुपरस्केलर को हाइपरस्केलर के साथ भ्रमित नहीं होना चाहिए जो उन कंपनियों को संदर्भित करता है जो हाइपरस्केल कंप्यूटिंग संसाधनों की पेशकश कर सकते हैं। हाइपरस्केल कंप्यूटिंग में मांग के साथ हार्डवेयर संसाधनों, जैसे कंप्यूट, मेमोरी, नेटवर्क बैंडविड्थ और स्टोरेज को मूल रूप से स्केल करने की क्षमता शामिल है। यह आमतौर पर बड़े डेटा केंद्रों और क्लाउड कंप्यूटिंग वातावरण में पाया जाता है।