रजिस्टर विंडो

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

सामान्य ऑपरेशन
कार्यक्रम के विभिन्न भागों के लिए रजिस्टरों के कई सेट उपलब्ध कराए गए हैं। कई सबरूटीन्स को प्रोसेसर संसाधनों को साझा करने के लिए मजबूर करने के लिए रजिस्टरों को प्रोग्रामर से जानबूझकर छिपाया जाता है।

रजिस्टरों को अदृश्य बनाना कुशलतापूर्वक कार्यान्वित किया जा सकता है; सीपीयू प्रक्रिया कॉल के दौरान प्रोग्राम के एक हिस्से से दूसरे हिस्से में होने वाली गतिविधि को पहचानता है। यह एक फंक्शन प्रोलॉग|निर्देशों की एक छोटी संख्या (प्रस्तावना) द्वारा पूरा किया जाता है और एक फंक्शन प्रोलॉग#एपिलॉग|इसी तरह छोटे सेट (एपिलॉग) में से एक के साथ समाप्त होता है। बर्कले डिज़ाइन में, इन कॉलों के कारण उस बिंदु पर रजिस्टरों का एक नया सेट बदल दिया जाएगा, या कॉल समाप्त होने पर मृत (या पुन: प्रयोज्य) के रूप में चिह्नित किया जाएगा।

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

तुलनात्मक रूप से, सन माइक्रोसिस्टम्स SPARC आर्किटेक्चर प्रत्येक आठ रजिस्टरों के चार सेटों में एक साथ दृश्यता प्रदान करता है। प्रत्येक आठ रजिस्टरों के तीन सेट विंडो किए गए हैं। आठ रजिस्टर (i0 से i7 तक) वर्तमान प्रक्रिया स्तर पर इनपुट रजिस्टर बनाते हैं। आठ रजिस्टर (L0 से L7) वर्तमान प्रक्रिया स्तर के लिए स्थानीय हैं, और आठ रजिस्टर (o0 से o7) वर्तमान प्रक्रिया स्तर से अगले स्तर तक के आउटपुट हैं जिन्हें कहा जाता है। जब एक प्रक्रिया को बुलाया जाता है, तो रजिस्टर विंडो सोलह रजिस्टरों द्वारा स्थानांतरित हो जाती है, पुराने इनपुट रजिस्टरों और पुराने स्थानीय रजिस्टरों को छिपा देती है और पुराने आउटपुट रजिस्टरों को नया इनपुट रजिस्टर बना देती है। सामान्य रजिस्टर (पुराने आउटपुट रजिस्टर और नए इनपुट रजिस्टर) का उपयोग पैरामीटर पासिंग के लिए किया जाता है। अंत में, आठ रजिस्टर (g0 से g7 तक) विश्व स्तर पर सभी प्रक्रिया स्तरों पर दृश्यमान हैं।

एएमडी 29000 ने विंडोज़ को परिवर्तनीय आकार की अनुमति देकर डिज़ाइन में सुधार किया, जो सामान्य मामले में उपयोग में मदद करता है जहां कॉल के लिए आठ से कम रजिस्टरों की आवश्यकता होती है। इसने रजिस्टरों को 64 के वैश्विक सेट और विंडोज़ के लिए अतिरिक्त 128 में भी अलग कर दिया। इसी तरह, IA-64 (इटेनियम) आर्किटेक्चर में वैरिएबल-आकार की विंडोज़ का उपयोग किया गया, जिसमें 32 वैश्विक रजिस्टर और विंडोज़ के लिए 96 रजिस्टर थे।

Infineon C166 परिवार वास्तुकला में, अधिकांश रजिस्टर केवल आंतरिक रैम में स्थान होते हैं जिनमें रजिस्टर के रूप में पहुंच योग्य होने की अतिरिक्त संपत्ति होती है। इनमें से 16 सामान्य प्रयोजन रजिस्टरों (R0-R15) के पते निश्चित नहीं हैं। इसके बजाय, R0 रजिस्टर कॉन्टेक्स्ट पॉइंटर (CP) रजिस्टर द्वारा बताए गए पते पर स्थित है, और शेष 15 रजिस्टर उसके बाद क्रमिक रूप से आते हैं। रजिस्टर विंडो एक आसान अपग्रेड पथ भी प्रदान करती है। चूंकि अतिरिक्त रजिस्टर प्रोग्राम के लिए अदृश्य हैं, इसलिए किसी भी समय अतिरिक्त विंडो जोड़ी जा सकती हैं। उदाहरण के लिए, ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग  के उपयोग के परिणामस्वरूप अक्सर बड़ी संख्या में छोटी कॉलें आती हैं, जिन्हें उदाहरण के लिए विंडो को आठ से बढ़ाकर सोलह तक समायोजित किया जा सकता है। यह SPARC में उपयोग किया जाने वाला दृष्टिकोण था, जिसमें वास्तुकला की नई पीढ़ियों के साथ अधिक रजिस्टर विंडो शामिल हैं। अंतिम परिणाम कम धीमी गति से रजिस्टर विंडो स्पिल और भरण संचालन है क्योंकि रजिस्टर विंडो कम बार ओवरफ्लो होती है।

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

संदर्भ

 * Discussing the complex Sparc implementation due to windowing.
 * Discussing the complex Sparc implementation due to windowing.
 * Discussing the complex Sparc implementation due to windowing.