इंटेल 8259

इंटेल 8259 प्रोग्रामेबल इंटरप्ट कंट्रोलर (पीआईसी) है जिसे इंटेल 8085 और इंटेल 8086 माइक्रोप्रोसेसर के लिए डिज़ाइन किया गया है। जिसका प्रारंभिक भाग 8259 था, जो कुछ समय पश्चात A सफिक्स वर्जन 8086 या 8088 प्रोसेसर के साथ अपवर्ड कम्पेटिबल और प्रयोग करने योग्य था। 8259 मल्टिपल इंटरप्ट इनपुट सोर्सेज को होस्ट माइक्रोप्रोसेसर के सिंगल इंटरप्ट आउटपुट में जोड़ता है, जो सिस्टम में उपलब्ध इंटरप्ट लेवल को प्रोसेसर चिप पर पाए जाने वाले एक या दो लेवल से आगे एक्सटेंड करता है। 8259A ओरिजिनल आईबीएम पीसी और आईबीएम पीसी एटी में आईएसए बस के लिए इंटरप्ट कंट्रोलर था।

8259 को 1976 में इंटेल के एमसीएस 85 सदस्य के रूप में प्रस्तुत किया गया था। 8259A को 1981 में प्रस्तुत किए गए ओरिजिनल पीसी में सम्मिलित किया गया था और 1983 में प्रस्तुत किए जाने पर पीसी/एक्सटी द्वारा मेन्टेन किया गया था। पीसीएटी के प्रारम्भ के साथ दूसरा 8259A भी ऐड किया गया था। सिमेट्रिक मल्टीप्रोसेसर पीसी में अपने प्रारम्भ के पश्चात से 8259 इंटेल एपीआईसी आर्किटेक्चर के साथ सह-अस्तित्व में है। मॉडर्न पीसी ने इंटेल एपीआईसी आर्किटेक्चर के पक्ष में 8259A को चरणबद्ध रूप से समाप्त करना प्रारम्भ कर दिया है। यद्यपि, अब यह सेपरेट चिप नहीं है, 8259A इंटरफ़ेस अभी भी मॉडर्न x86 मदरबोर्ड पर प्लेटफार्म कंट्रोलर हब या साउथब्रिज (कंप्यूटिंग) द्वारा प्रोवाइड किया जाता है।

कार्यात्मक विवरण
8259 पर मेन सिग्नल पिन इस प्रकार हैं: जिनमें IRQ0 से IRQ7 नामक आठ इंटरप्ट इनपुट रिक्वेस्ट लाइनें, आईएनटीआर नामक इंटरप्ट रिक्वेस्ट आउटपुट लाइन, इंटरप्ट लेवल या वेक्टर ऑफसेट को कम्यूनिकेट करने के लिए आईएनटीए, D0 से D7 नामक इंटरप्ट एक्नॉलेजमेंट लाइन भी सम्मिलित हैं। अन्य कनेक्शनों में 8259 के मध्य कैस्केडिंग के लिए CAS0 से CAS2 सम्मिलित हैं।

अधिकतम 64 IRQ प्रदान करने के लिए आठ स्लेव 8259 को मास्टर 8259 में कैस्केड किया जा सकता है। 8259 को स्लेव 8259 की INT लाइन से और INT लाइन को मास्टर 8259 की IRQ लाइन से जोड़कर कैस्केड किया जाता है।

एन्ड ऑफ़ इंटरप्ट (ईओआई) ऑपरेशन स्पेसिफिक ईओआई, नॉन-स्पेसिफिक ईओआई और ऑटो-ईओआई को सपोर्ट करता है। स्पेसिफिक ईओआई उस IRQ लेवल को स्पेसिफाय करता है जिसे वह ISR में एक्नॉलेज कर रहा है। नॉन-स्पेसिफिक ईओआई ISR में IRQ लेवल को रीसेट करता है। ऑटो-ईओआई इंटरप्ट एक्नॉलेज होने के पश्चात् ISR में IRQ लेवल को रीसेट करता है।

एज और लेवल इंटरप्ट ट्रिगर मोड 8259A द्वारा सपोर्टेड हैं। फिक्स्ड प्रायोरिटी और रोटेटिंग प्रायोरिटी मोड सपोर्टेड हैं।

8259 को 8080/8085 या 8086/8088 के साथ कार्य करने के लिए कॉन्फ़िगर किया जा सकता है। 8086/8088 पर, इंटरप्ट होने पर इंटरप्ट कंट्रोलर डेटा बस पर इंटरप्ट नंबर प्रदान करता है। 8080/8085 का इंटरप्ट साइकिल डेटा बस पर तीन बाइट्स (8080/8085 इंस्ट्रक्शन सेट में कॉल इंस्ट्रक्शन के अनुरूप) को प्रस्तावित करता है।

8259A, 8259 (विशेष रूप से बफ़र मोड और लेवल-ट्रिगर मोड में) की उपमा में एडिशनल फ़ंक्शनैलिटी प्रदान करता है और इसके साथ अपवर्ड कम्पेटिबल है।

डॉस और विंडोज़
डॉस और माइक्रोसॉफ़्ट विंडोज़ के संयोजन में 8259 प्रोग्रामिंग ने बैकवर्ड कम्पेटिबिलिटी के लिए कई भ्रमित करने वाली समस्याएँ प्रस्तुत की हैं, जो 1981 में प्रस्तुत किए गए ओरिजिनल पीसी तक प्रस्तावित हुई हैं।

प्रथम समस्या ही दूसरी समस्या का आधार है। डॉस डिवाइस ड्राइवरों से अपेक्षा की जाती है कि जब वे अपने डिवाइस की सर्विसिंग पूर्ण कर लें तो वे 8259 पर नॉन-स्पेसिफिक ईओआई सेंड करें। यह डॉस में 8259 के किसी भी अन्य ईओआई मोड के उपयोग को प्रिवेंट करता है, और मास्टर 8259 से स्लेव 8259 तक रीरूट किए गए डिवाइस इंटरप्ट के मध्य अंतर को स्पष्ट करता है।

दूसरी समस्या पीसी/एटी में स्लेव 8259 के प्रारम्भ से IRQ2 और IRQ9 के उपयोग से संबंधित है। स्लेव 8259 का INT आउटपुट मास्टर के IR2 से कनेक्ट है। आईएसए बस की IRQ2 लाइन, जो मूल रूप से इस IR2 से कनेक्ट थी, जिसको स्लेव के IR1 पर रीरूट किया गया था। इस प्रकार ओल्ड IRQ2 लाइन अब सीपीयू में IRQ9 जेनेरेट करती है। डॉस डिवाइस ड्राइवरों के साथ बैकवर्ड कम्पेटिबिलिटी की अनुमति देने के लिए जो अभी भी IRQ2 के लिए सेट हैं, IRQ9 के लिए बायोस द्वारा हैंडलर इनस्टॉल किया गया है जो ओरिजिनल IRQ2 हैंडलर पर इंटरप्ट को रीडायरेक्ट करता है।

पीसी पर, बायोस (और इस प्रकार डॉस भी) वेक्टर ऑफसेट 8 (INT08-INT0F) को इंटरप्ट करने के लिए मास्टर 8259 इंटरप्ट रिक्वेस्ट (IRQ0-IRQ7) और वेक्टर ऑफसेट 112 (INT70-INT77) को इंटरप्ट करने के लिए स्लेव 8259 (पीसी/एटी) इंटरप्ट रिक्वेस्ट (IRQ8-IRQ15) को मैप करता है। ऐसा प्रथम 32 (INT00-INT1F) इंटरप्ट वैक्टर को प्रोसेसर द्वारा इंटरनल एक्सेप्शन्स के लिए रिज़र्व किये जाने के पश्चात किया गया था (किसी कारण से पीसी के डिजाइन के लिए इसे उपेक्षित कर दिया गया था)। एक्सेप्शन्स के लिए रिज़र्व वैक्टर के कारण अधिकांश अन्य ऑपरेटिंग सिस्टम (कम से कम मास्टर) 8259 IRQ (यदि प्लेटफॉर्म पर उपयोग किया जाता है) को दूसरे इंटरप्ट वेक्टर बेस ऑफसेट पर मैप करते हैं।

अन्य ऑपरेटिंग सिस्टम
चूंकि अधिकांश अन्य ऑपरेटिंग सिस्टम डिवाइस ड्राइवर एक्सपेक्टेशन में परिवर्तन की अनुमति देते हैं, इसलिए ऑपरेशन के अन्य 8259 मोड, जैसे ऑटो-ईओआई, का उपयोग किया जा सकता है। यह मॉडर्न x86 हार्डवेयर के लिए विशेष रूप से महत्वपूर्ण है जिसमें 8259 के साथ कम्युनिकेशन करते समय इनपुट/आउटपुट एड्रेस स्पेस डिले पर अधिक समय व्यतीत हो सकता है। इस प्रकार यह 8259s के साथ मल्टीप्रोसेसर x86 सिस्टम के सिंक्रोनाइज़ेशन में कई अन्य ऑप्टिमाइजेशन, जैसे क्रिटिकल सेक्शंस की भी अनुमति देता है।

एज और लेवल ट्रिगर मोड
चूंकि आईएसए बस लेवल ट्रिगर इंटरप्ट को सपोर्ट नहीं करती है, इसलिए लेवल ट्रिगर मोड का उपयोग आईएसए डिवाइस से जुड़े इंटरप्ट के लिए नहीं किया जा सकता है। इसका अर्थ है कि पीसी एक्सटी, पीसी/एटी और कम्पैटिबल सिस्टम पर 8259 को एज ट्रिगर्ड मोड के लिए प्रोग्राम किया जाना चाहिए। एमसीए सिस्टम पर, डिवाइस लेवल ट्रिगर्ड इंटरप्ट का उपयोग करते हैं और इंटरप्ट कंट्रोलर सदैव लेवल ट्रिगर मोड में कार्य करने के लिए हार्डवेयर्ड होता है। नए ईआईएसए, पीसीआई और उसके पश्चात के सिस्टम पर एज/लेवल कंट्रोल रजिस्टर (ईएलसीआर) प्रति IRQ लाइन के मोड को कण्ट्रोल करते हैं, जिससे आईएसए बसों के साथ ऐसे सिस्टम के लिए 8259 का मोड प्रभावी रूप से अप्रासंगिक हो जाता है। ELCR को करेक्ट ऑपरेशन के लिए सिस्टम स्टार्टअप पर बायोस द्वारा प्रोग्राम किया जाता है।

ELCRs x86 इनपुट/आउटपुट एड्रेस स्पेस में 0x4d0 और 0x4d1 लोकेटेड हैं। वे 8-बिट वाइड हैं, प्रत्येक बिट 8259 से IRQ के अनुरूप है। जब बिट सेट किया जाता है, तो IRQ लेवल ट्रिगर मोड में होता है; अन्यथा, IRQ एज ट्रिगर मोड में है।

स्पूरियस इंटरप्ट
8259 कई स्थितियों के रिस्पांस में स्पूरियस इंटरप्ट जेनेरेट करता है।

प्रथम IRQ लाइन है जिसे एक्नॉलेज किए जाने से पूर्व डीअस्सेर्ट किया जा रहा है। ऐसा IRQ लाइनों पर नॉइज़ के कारण हो सकता है। एज ट्रिगर मोड में, नॉइज़ को 100 एनएस तक लो स्टेट में लाइन को मेन्टेन रखना चाहिए। जब नॉइज़ कम हो जाती है, तो पुल-अप रेसिस्टर IRQ लाइन को हाई पर रिटर्न कर देता है, इस प्रकार फाल्स इंटरप्ट जेनेरेट होता है। लेवल ट्रिगर मोड में, नॉइज़ सिस्टम INTR लाइन पर हाई सिग्नल लेवल का कारण बन सकता है। यदि सिस्टम एक्नॉलेजमेंट रिक्वेस्ट सेंड करता है, तो 8259 के निकट सॉल्व करने के लिए कुछ नहीं है और इस प्रकार रिस्पांस में IRQ7 सेंड करता है। यह प्रथम स्थिति स्पूरियस IRQ7 जेनेरेट करेगी।

इसी प्रकार की स्थिति तब हो सकती है जब 8259 अनमास्क और IRQ इनपुट डी-एसेरशन उचित रूप से सिंक्रनाइज़ नहीं होते हैं। कई सिस्टमों में, IRQ इनपुट को इनपुट/आउटपुट राइट द्वारा डीअसेर्ट किया जाता है, और प्रोसेसर तब तक वेट नहीं करता है जब तक राइट इनपुट/आउटपुट डिवाइस तक नहीं पहुंच जाता है। यदि प्रोसेसर प्रारम्भ रहता है और IRQ इनपुट डीअसर्टेड होने से पूर्व 8259 IRQ को अनमास्क करता है, तो 8259 पुनः INTR को अस्सेर्ट करेगा। जब तक प्रोसेसर इस INTR को रेकग्निजि करता है और 8259 से IRQ को रीड करने के लिए एक्नॉलेजमेंट प्रस्तावित करता है, तब तक IRQ इनपुट डीअसेर्ट हो सकता है, और 8259 स्पूरियस IRQ7 रिटर्न करता है।

दूसरी यह है कि मास्टर 8259 का IRQ2 तब एक्टिव होता है जब स्लेव 8259 की IRQ लाइनें इंटरप्ट एक्नॉलेजमेंट के फॉलिंग एज पर इनएक्टिव होती हैं। यह दूसरी स्थिति स्पूरियस IRQ15 जेनेरेट करेगी, किन्तु यह दुर्लभ है।

पीसी एक्सटी और पीसी/एटी
पीसी एक्सटी आईएसए सिस्टम में 8259 कंट्रोलर था, जबकि पीसी/एटी और उसके पश्चात के सिस्टम में दो 8259 कंट्रोलर, मास्टर और स्लेव थे। IRQ0 से IRQ7 मास्टर 8259 की इंटरप्ट लाइनें हैं, जबकि IRQ8 से IRQ15 स्लेव 8259 की इंटरप्ट लाइनें हैं। 8259 पर पिन पर लेबल IR0 से IR7 तक हैं। IRQ0 से IRQ15 तक आईएसए बस की लाइनों के नाम हैं जिनसे 8259 जुड़े हुए हैं।

यह भी देखें

 * एडवांस्ड प्रोग्रामेबल इंटरप्ट कंट्रोलर (एपीआईसी)
 * आईएफ (x86 फ्लैग)
 * इंटरप्ट हैंडलर
 * इंटरप्ट लेटेंसी
 * नॉन-मासकेबल इंटरप्ट (एनएमआई)

संदर्भ

 * Gilluwe, Frank van. The Undocumented PC. A-W Developers Press, 1997. ISBN 0-201-47950-8
 * McGivern, Joseph. Interrupt-Driven PC System Design. Annabooks, 1998. ISBN 0-929392-50-7
 * IBM Personal System/2 Hardware Interface Technical Reference – Architectures. IBM, 1990. IBM Publication 84F8933