रजिस्टर विंडो
कंप्यूटर इंजीनियरिंग में रजिस्टर विंडो एक ऐसी सुविधा है जो आंतरिक रजिस्टरों के एक सबसेट को निश्चित, प्रोग्रामर-दृश्यमान रजिस्टरों में गतिशील रूप से अलियास करके रजिस्टरों को एक सबरूटीन में समर्पित करती है। फ़ंक्शन कॉल और रिटर्न के लिए आवश्यक स्टैक (अमूर्त डेटा प्रकार) संचालन की संख्या को कम करके प्रोसेसर के प्रदर्शन को उत्तम बनाने के लिए रजिस्टर विंडो प्रयुक्त की जाती है। बर्कले आरआईएससी डिज़ाइन की सबसे प्रभावशाली विशेषताओं में से एक उन्हें बाद में एएमडी एएम29000, इंटेल आई960, सन माइक्रोसिस्टम्स एसपीएआरसी और इंटेल आईए-64 जैसे निर्देश सेट आर्किटेक्चर में प्रयुक्त किया गया था।
सामान्य ऑपरेशन
कार्यक्रम के विभिन्न भागों के लिए रजिस्टरों के कई सेट उपलब्ध कराए गए हैं। कई सबरूटीन्स को प्रोसेसर संसाधनों को साझा करने के लिए विवश करने के लिए रजिस्टरों को प्रोग्रामर से जानबूझकर छिपाया जाता है।
रजिस्टरों को अदृश्य बनाना कुशलतापूर्वक कार्यान्वित किया जा सकता है; सीपीयू प्रक्रिया कॉल के समय प्रोग्राम के एक भाग से दूसरे भाग में होने वाली गतिविधि को पहचानता है। यह एक फंक्शन प्रोलॉग या निर्देशों की एक छोटी संख्या (प्रस्तावना) द्वारा पूरा किया जाता है और एक फंक्शन प्रोलॉग या एपिलॉग या फिर इसी तरह छोटे सेट (एपिलॉग) में से एक के साथ समाप्त होता है। बर्कले डिज़ाइन में, इन कॉलों के कारण उस बिंदु पर रजिस्टरों का एक नया सेट में बदल दिया जाएगा, या कॉल समाप्त होने पर मृत (या पुन: प्रयोज्य) के रूप में चिह्नित किया जाता है।
सीपीयू में अनुप्रयोग
बर्कले आरआईएससी डिज़ाइन में, कुल 64 में से केवल आठ रजिस्टर ही कार्यक्रमों में दिखाई देते हैं। रजिस्टरों के पूरे सेट को फ़ाइल पंजीकृत करें के रूप में जाना जाता है, और आठ के किसी विशेष सेट को विंडो के रूप में जाना जाता है। फ़ाइल आठ प्रक्रिया कॉलों को अपने स्वयं के रजिस्टर सेट रखने की अनुमति देती है। जब तक प्रोग्राम आठ कॉल से अधिक लंबी श्रृंखलाओं को कॉल नहीं करता है, तब तक रजिस्टरों को कभी भी स्पिल नहीं करना पड़ता है, अथार्त मुख्य मेमोरी या कैश में सहेजा जाता है जो रजिस्टर एक्सेस की तुलना में एक धीमी प्रक्रिया है।
तुलनात्मक रूप से, सन माइक्रोसिस्टम्स स्पार्क आर्किटेक्चर प्रत्येक आठ रजिस्टरों के चार सेटों में एक साथ दृश्यता प्रदान करता है। प्रत्येक आठ रजिस्टरों के तीन सेट विंडो किए गए हैं। आठ रजिस्टर (i0 से i7 तक) वर्तमान प्रक्रिया स्तर पर इनपुट रजिस्टर बनाते हैं। आठ रजिस्टर (L0 से L7) वर्तमान प्रक्रिया स्तर के लिए स्थानीय हैं, और आठ रजिस्टर (o0 से o7) वर्तमान प्रक्रिया स्तर से अगले स्तर तक के आउटपुट हैं जिन्हें कहा जाता है। जब एक प्रक्रिया को बुलाया जाता है, तो रजिस्टर विंडो सोलह रजिस्टरों द्वारा स्थानांतरित हो जाती है, पुराने इनपुट रजिस्टरों और पुराने स्थानीय रजिस्टरों को छिपा देती है और पुराने आउटपुट रजिस्टरों को नया इनपुट रजिस्टर बना देती है। सामान्य रजिस्टर (पुराने आउटपुट रजिस्टर और नए इनपुट रजिस्टर) का उपयोग पैरामीटर पासिंग के लिए किया जाता है। अंत में, आठ रजिस्टर (g0 से g7 तक) विश्व स्तर पर सभी प्रक्रिया स्तरों पर दृश्यमान हैं।
एएमडी 29000 ने विंडोज़ को परिवर्तनीय आकार की अनुमति देकर डिज़ाइन में सुधार किया जाता है, जो सामान्य स्थिति में उपयोग में सहायता करता है जहां कॉल के लिए आठ से कम रजिस्टरों की आवश्यकता होती है। इसने रजिस्टरों को 64 के वैश्विक सेट और विंडोज़ के लिए अतिरिक्त 128 में भी भिन्न कर दिया था। इसी के अनुसार, IA-64 (इटेनियम) आर्किटेक्चर में वैरिएबल-आकार की विंडोज़ का उपयोग किया गया, जिसमें 32 वैश्विक रजिस्टर और विंडोज़ के लिए 96 रजिस्टर थे।
इन्फिनियोन C166 वर्ग वास्तुकला में, अधिकांश रजिस्टर केवल आंतरिक रैम में स्थान होते हैं जिनमें रजिस्टर के रूप में पहुंच योग्य होने की अतिरिक्त गुण होती है। इनमें से 16 सामान्य प्रयोजन रजिस्टरों (R0-R15) के पते निश्चित नहीं हैं। इसके अतिरिक्त , R0 रजिस्टर कॉन्टेक्स्ट पॉइंटर (CP) रजिस्टर द्वारा बताए गए पते पर स्थित है, और शेष 15 रजिस्टर उसके बाद क्रमिक रूप से आते हैं।[1]
रजिस्टर विंडो एक आसान अपग्रेड पथ भी प्रदान करती है। चूंकि अतिरिक्त रजिस्टर प्रोग्राम के लिए अदृश्य हैं, इसलिए किसी भी समय अतिरिक्त विंडो जोड़ी जा सकती हैं। उदाहरण के लिए, ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के उपयोग के परिणामस्वरूप अधिकांशतः बड़ी संख्या में छोटी कॉलें आती हैं, जिन्हें उदाहरण के लिए विंडो को आठ से बढ़ाकर सोलह तक समायोजित किया जा सकता है। यह स्पार्क में उपयोग किया जाने वाला दृष्टिकोण था, जिसमें वास्तुकला की नई पीढ़ियों के साथ अधिक रजिस्टर विंडो सम्मिलित हैं। अंतिम परिणाम कम धीमी गति से रजिस्टर विंडो स्पिल और भरण संचालन है क्योंकि रजिस्टर विंडो कम बार ओवरफ्लो होती है।
आलोचना
रजिस्टर प्रदर्शन को उत्तम बनाने के लिए रजिस्टर विंडो ही एकमात्र विधि नहीं है। स्टैनफोर्ड एमआईपीएस को डिजाइन करने वाले स्टैनफोर्ड विश्वविद्यालय के समूह ने बर्कले के काम को देखा और निर्णय लिया कि समस्या रजिस्टरों की कमी नहीं थी, किंतु उपस्थित रजिस्टरों का व्यर्थ उपयोग था। इसके अतिरिक्त उन्होंने अपने संकलक के रजिस्टर आवंटन में अधिक समय लगाया था यह सुनिश्चित करते हुए कि यह एमआईपीएस में उपलब्ध बड़े सेट का बुद्धिमानी से उपयोग करता है। इसके परिणामस्वरूप चिप की सम्मिश्र्ता कम हो गई है , कुल रजिस्टरों की संख्या आधी हो गई, जबकि उन स्थितियों में संभावित रूप से उच्च प्रदर्शन की प्रस्तुति की गई जहां एक एकल प्रक्रिया बड़े दृश्यमान रजिस्टर स्थान का उपयोग कर सकती थी। अंत में यह आधुनिक कंपाइलरों के साथ, एमआईपीएस प्रक्रिया कॉल के समय भी अपने रजिस्टर स्थान का उत्तम उपयोग करता है।
संदर्भ
- ↑ "Infineon C166 Family Instruction Set Manual" (PDF). Keil. Retrieved 2020-03-12.
- Frantzen, Mike; Shuey, Mike (2001). "StackGhost: Hardware Facilitated Stack Protection". Proceedings of the 10th Usenix Security Symposium. USENIX. pp. 55–66. Retrieved 27 August 2010.
- Magnusson, Peter (April 1997). "Understanding stacks and registers in the Sparc architecture(s)". Archived from the original on 24 December 2012. Retrieved 27 August 2010.
- Mueller, Frank. "setjmp/longjmp". Discussing the complex Sparc implementation due to windowing.