रजिस्टरों पर लागू होने पर बैंकिंग का क्या अर्थ है?


13

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

रजिस्टरों के संबंध में बैंकिंग का क्या मतलब है?

जवाबों:


16

बैंकिंग शब्द का उपयोग दो अलग-अलग इंद्रियों में किया जाता है जब रजिस्टर पर लागू किया जाता है।

इंटरप्ट हैंडलिंग के लिए बैंक्ड रजिस्टर

जिस भावना के साथ स्टैकऑवरफ्लो प्रश्न का संबंध है वह फ़ंक्शन में (मेमोरी) बैंक स्विचिंग (कुछ 8-बिट और 16-बिट प्रोसेसर द्वारा उपयोग ) के उपयोग के समान है । रजिस्टरों के संग्रह के नामों को भौतिक रजिस्टरों के एक अलग संग्रह में मैप किया जाता है। ARMv7 अपने 16 जीपीआर में से 7 के लिए एक अतिरिक्त बैंक प्रदान करता है और स्टैक पॉइंटर रजिस्टर और लिंक रजिस्टर के लिए पांच और बैंक (एआरएम लिंक को रजिस्टर से बचाने के लिए उपयोग किया जाता है) का उपयोग करता है। इटेनियम अपने 31 स्टैटिक जीपीआर में से 16 के लिए एक अतिरिक्त बैंक प्रदान करता है। (एमआइपी 31 जीपीआर के पूरे सेट प्रदान करता है, उन्हें "शैडो रजिस्टर सेट" कहते हैं।)

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

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

(पंजीकृत विंडो के रूप में रजिस्टरों के ऐसे बैंकों का उपयोग करने के लिए उपलब्ध रजिस्टरों की संख्या का विस्तार करने का प्रस्ताव किया गया है, उदाहरण के लिए, "एक विंडो-रजिस्टर फ़ाइल का उपयोग करके कम-पावर प्रोसेसर में प्रभावी रजिस्टरों की संख्या बढ़ाना", राजीव ए। रवींद्रन एट अल।) 2003. एक व्यक्ति इटेनियम और SPARC [जो "रजिस्टर विंडोज़" शब्द का उपयोग करता है] के रूप में फ़ंक्शन कॉल के लिए रजिस्टर सेव और ओवरहेड को पुनर्स्थापित करने के लिए उपयोग किए जाने वाले स्टैक को पंजीकृत करने के लिए एक समानता को नोट कर सकता है, हालांकि ये तंत्र आमतौर पर रजिस्टर नामों को स्वैप करने के बजाय शिफ्ट करते हैं। बाहर।)

हार्डवेयर के संदर्भ में, अनुदेश डिकोड में रजिस्टरों का नाम बदलकर बैंक रजिस्टर्ड लागू किया जा सकता है। एआरएम की अपेक्षाकृत जटिल बैंकिंग प्रणाली के लिए यह संभवतः पसंदीदा तंत्र होगा। दो नंबर की रजिस्टरों की शक्ति के साथ एक अतिरिक्त बैंक के साथ इटेनियम द्वारा उपयोग की जाने वाली सरल बैंकिंग प्रणाली के लिए, यह रजिस्टर फ़ाइल के अनुक्रमण में नाम बदलने को शामिल करने के लिए व्यावहारिक हो सकता है। (बेशक, यह नाम बदलने के कुछ रूपों के साथ संगत नहीं होगा जो आउट-ऑफ-ऑर्डर निष्पादन का समर्थन करने के लिए उपयोग किया जाता है।)

यह पहचान कर कि एक ही समय में विभिन्न बैंकों तक पहुंच नहीं है, इस तंत्र का उपयोग कर एक चतुर अनुकूलन "3 डी रजिस्टरों" का उपयोग करके अत्यधिक पोर्ट किए गए रजिस्टर फ़ाइल के तार (तार-सीमित) क्षेत्र को कम कर सकता है। (यह तकनीक SPARC के रजिस्टर विंडो के संदर्भ में प्रस्तावित की गई थी - "ए थ्री डायमेंशनल रजिस्टर फाइल फॉर सुपरस्क्लेर प्रोसेसर्स", Tremblay et al।, 1995 - और इंटेल द्वारा SoEMT के लिए एक वेरिएंट का इस्तेमाल किया गया था - "मल्टी थ्रेडेड, पैरिटी-प्रोटेक्टेड। 128-वर्ड रजिस्टर फाइल्स ऑन ए ड्यूल-कोर इटेनियम-फैमिली प्रोसेसर ", Fetzer et al।, 2005.)

बैंकिंग संभव पहुंच की संख्या बढ़ाने के लिए

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

बैंक्ड रजिस्टर फाइलों ( गूगल स्कॉलर सर्च) पर कई अकादमिक कागजात मिले हैं), और बैंक संघर्षों के प्रभाव को कम करने के लिए कई सामान्य तकनीकों का प्रस्ताव किया गया है। सबसे स्पष्ट तकनीक है बैंक निर्देशों का कुछ सांख्यिकीय औसत प्रदान करने के लिए बफर निर्देश (जैसा कि आउट-ऑफ-ऑर्डर निष्पादन के लिए किया जाता है)। निर्देश को निष्पादित करने के लिए तैयार होने से पहले एक रजिस्टर ऑपरेंड पढ़ना भी संभव है (उदाहरण के लिए, यदि कोई अन्य ऑपरेंड अभी तक तैयार नहीं है या एक संरचनात्मक खतरे को निष्पादित करता है)। बैंकों को रजिस्टरों का आवंटन संघर्षों की संभावना को कम करने के लिए अपेक्षित उपयोग के बारे में जानकारी का उपयोग कर सकता है। (सॉफ्टवेयर अपेक्षित तरीके से रजिस्टरों का उपयोग करके अधिमानतः सहायता कर सकता है।) वर्चुअल भौतिक रजिस्टर नामों का उपयोग करके, भौतिक रजिस्टर नामों (और इस प्रकार बैंकों) के आवंटन में देरी करना संभव है जब तक कि मूल्य रजिस्टर में संग्रहीत नहीं किया जाता है;

इस प्रकार के बैंकिंग को कभी-कभी छद्म-गुणा कहा जाता है क्योंकि यह बड़ी संख्या में एक्सेस पोर्ट का भ्रम प्रदान करता है। यह तकनीक आमतौर पर कैश के लिए उपयोग की जाती है क्योंकि शारीरिक संरचना को अक्सर अन्य कारणों से अलग मेमोरी सरणियों में विभाजित किया जाता है।

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

सारांश

यह इन दो प्रकार के बैंकिंग को अस्थायी बैंकिंग के रूप में अलग करने में सहायक हो सकता है जिसमें बैंक का चयन समय के साथ फैलता है (जैसे एआरएम का बैंक तेजी से व्यवधान के लिए रजिस्टर करता है) और स्थानिक बैंकिंग जिसमें बैंक की पहुंच समय में समवर्ती हो सकती है लेकिन स्थानिक रूप से वितरित की जाती है।

टेम्पोरल बैंकिंग आम तौर पर सॉफ्टवेयर के संपर्क में होती है और इसका इस्तेमाल इंटरप्ट के ओवरहेड (और जटिलता) को कम करने के लिए किया जाता है। (वैचारिक रूप से, स्विच-ऑन-इवेंट-मल्टीट्रेडेड प्रोसेसर में थ्रेड स्विचिंग, इंटरप्ट हैंडलिंग के समान है और ओवरहेड को कम करने के लिए इसी तरह के तंत्र का उपयोग कर सकते हैं।)

स्थानिक बैंकिंग आईएसए का कम हिस्सा है (हालांकि इटेनियम आवश्यक लोड और स्टोर फ़्लोटिंग-पॉइंट रजिस्टर जोड़े का उपयोग करने के लिए सम और विषम रजिस्टर नंबर - जो कि पंजीकरण रोटेशन के उपयोग की गारंटी नहीं है - अतिरिक्त प्रदान करने के लिए एक तुच्छ दो बैंक डिज़ाइन की अनुमति देता है रजिस्टर फ़ाइल एक्सेस आवश्यकताएँ) और प्रति चक्र रजिस्टर एक्सेस की एक बड़ी संख्या प्रदान करने की लागत को कम करने के लिए उपयोग किया जाता है।

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