कंप्यूटर आर्किटेक्चर: क्या IRQ रेंज संकीर्ण होने के कारण USB कीबोर्ड कम उत्तरदायी हैं?


19

यहाँ एक बयान है जो मैंने अभी सोचा था। क्या कोई मुझे बता सकता है कि क्या और क्यों, यह सच है?

कथन: क्योंकि USB कीबोर्ड एक USB जेनेरिक ड्राइवर और आर्किटेक्चर पर भरोसा करते हैं जिनकी पहुंच केवल IRQ स्तर तक कम होती है, इसलिए यह कीबोर्ड को IRQ को प्राथमिकता-उच्च के रूप में एक और (PS2) नियंत्रक के रूप में एक्सेस नहीं दे सकता है।

क्या यह (यदि यह सच है) का अर्थ है कि किसी अन्य पोर्ट प्रकार (जैसे PS2) पर प्लग किए गए कीबोर्ड की तुलना में USB कीबोर्ड में कम प्राथमिकता (गति से अधिक उपलब्धता के संदर्भ में) होगी?

उदाहरण के लिए एक यूएसबी कीबोर्ड को एक प्राथमिकता वाले IRQ में मैप किया गया है, जो एक दोषपूर्ण प्रणाली पर है जो एक अन्य मध्यम प्राथमिकता वाले रुकावट रूटीन पर अटक गया है। इसकी अपेक्षाकृत समान प्राथमिकता के कारण, कीबोर्ड की घटनाओं को नजरअंदाज कर दिया जाएगा और आप Ctrl-Alt-del या किसी अन्य आपातकालीन कीस्टेकेक को भेजने में सक्षम नहीं होंगे। यदि कीबोर्ड में अधिक प्राथमिकता होती है, तो सिस्टम कीस्ट्रोक इंटरप्ट रूटीन में प्रवेश कर सकता है।

या क्या USB नियंत्रक के पास पर्याप्त IRQ रेंज है (क्या यह निरंतर प्राथमिकता-वार है या नहीं) इसके लिए अपने कीबोर्ड को वह प्राथमिकता देना चाहिए जो उसे चाहिए (मूल रूप से बिजली की विफलता के ठीक नीचे)?

और एक दूरस्थ डेस्कटॉप सत्र पर नेटवर्क कनेक्शन के माध्यम से मैप किए गए वर्चुअल कीबोर्ड के बारे में क्या?

संपादित करें: मेरा प्रश्न गति के बारे में ज्यादा नहीं है (टिप्पणियों को देखें): मुख्य प्रश्न यह है: क्या पीएस 2 कीबोर्ड में सीपीयू से बात करने की अधिक संभावना है जो कि यूएसबी की तुलना में अधिक और प्राथमिकता से कम एक रुकावट प्राथमिकता पर कहीं अटक गई है?


2
आश्चर्य है कि अगर वही बात USB चूहों के लिए सच है। कुछ महीने पहले इंटरफेस को स्विच करने के बाद (लेकिन माउस ही नहीं) मेरा निश्चित रूप से ऐसा लगता है।
मार्टिनगु

यदि यह, कीबोर्ड के लिए सच है, तो यह चूहों के लिए सबसे अधिक संभव है; लेकिन शायद कम महत्वपूर्ण नहीं है क्योंकि माउस के लिए कोई आपातकालीन कीस्ट्रोक्स नहीं है
PPC

मुझे नहीं लगता कि इस बारे में चिंतित होना कुछ समझदारी है। यदि आपने ऐसा किया है, और कीबोर्ड अटक गया है, तो नेटवर्क इंटरफेस को भूखा रखा जाएगा और आप सिस्टम को दूरस्थ रूप से नियंत्रित नहीं कर सकते। ऐसा लगता है जैसे आप सिर्फ एक समस्या को दूसरे के लिए व्यापार कर रहे हैं।
डेविड Schwartz

1
@DavidSchwartz: यह ज्यादातर एक सैद्धांतिक प्रश्न है, और एक कंप्यूटर वास्तुकार के दृष्टिकोण से लिया गया है। फिर भी, उपयोगकर्ता के PoV का एक अनुप्रयोग है: "मेरा कंप्यूटर अटका हुआ है, Ctrl-Alt-Backspace का जवाब नहीं देता: क्या मुझे PS2 कीबोर्ड देखना चाहिए या इसे भूल जाना चाहिए और हार्ड रिबूट करना चाहिए"
PPC

2
@PPC: Ctl-alt-del संभावना वैसे भी काम नहीं करेगी। रिबूट प्रक्रिया को उच्च-स्तरीय सॉफ़्टवेयर द्वारा नियंत्रित किया जाता है जो प्रोग्राम को बंद कर देता है, कैश को फ्लश करता है, और इसी तरह। एक बाधा तूफान के साथ, उच्च-स्तरीय सॉफ्टवेयर काम नहीं करेगा।
डेविड श्वार्ट्ज

जवाबों:


17

यह IRQ रेंज के बारे में नहीं है, यह तीन मुख्य कारकों के बारे में है:

  1. बस भीड़ की मात्रा
  2. डाटा की मात्रा
  3. डेटा पथ की लंबाई

अतीत में, कीबोर्ड और चूहों में कीबोर्ड के लिए एक समर्पित IRQ (IRQ1, PS / 2 चूहों के लिए IRQ12) होगा।

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

दूसरी ओर USB डिवाइस सभी एक ही बस और USB कंट्रोलर की IRQ (जो आमतौर पर IRQ- स्टीयरिंग वालों में से एक है जो NIC, वीडियो-कार्ड और अन्य जैसे अन्य उपकरणों के साथ साझा की जाती है) को साझा करते हैं। जैसे कि, USB कीबोर्ड के साथ, कीबोर्ड कंट्रोलर से, USB होस्ट कंट्रोलर में USB बस के माध्यम से, वहां से सेकेंडरी PIC के लिए, फिर मास्टर PIC के लिए, फिर OS या BIOS में या तो ड्राइवरों के लिए इवेंट जाते हैं। , फिर सीपीयू पर। इसके अलावा, USB पर स्थानांतरित डेटा में त्रुटि-जाँच डेटा जोड़ा गया है।

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

इसके अलावा, अपने स्वयं के होने का मतलब है (IRQ का मतलब था कि पुराने कीबोर्ड सीपीयू के प्रसंस्करण को बाधित कर सकते हैं जब भी जरूरत हो। यूएसबी के साथ, कीबोर्ड में ऐसा कोई तंत्र नहीं है और केवल यूएसबी नियंत्रक के लिए कुछ डेटा और प्रतीक्षा / आशा भेज सकता है। किन्हीं बिंदुओं पर।

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

यहाँ एक एटी या पीएस / 2 कीबोर्ड और एक यूएसबी कीबोर्ड के बीच अंतर का एक सरल दृश्य है:

यहाँ छवि विवरण दर्ज करें


मैं प्राथमिकता से अधिक गति में नहीं हूं: मैं समझता हूं कि अधिक लंबा डेटा पथ मेरे कीस्ट्रोक को प्रतीक्षा करने का कारण बन सकता है; लेकिन मैं "संभावना है कि कीस्ट्रोक एक दोषपूर्ण प्रणाली पर खो जाएगा" के बारे में सोच रहा हूं, जो मुझे लगता है कि पथ की लंबाई पर निर्भर नहीं करता है।
पीपीसी

सीपीयू से टकराने वाले सॉफ्टवेयर में IRQ को कैसे संसाधित किया जा सकता है? क्या APIC के पास अपने स्वयं के प्रोसेसर हैं? केंद्रीय स्मृति में उनकी दिनचर्या के साथ? क्या वे CPU समय 'उधार' लेते हैं?
पीपीसी

> "संभावना है कि कीस्ट्रोके एक दोषपूर्ण प्रणाली पर खो जाएगा" यह गलती पर निर्भर करता है, लेकिन हां, स्पष्ट रूप से एक यूएसबी कीबोर्ड में अतिरिक्त जटिलता के कारण कीस्ट्रोक्स को खोने की अधिक संभावना है। > पुन: APICs हाँ, वे एक प्रोसेसर है कि प्रसंस्करण के कुछ स्तर है, जैसे कुंजीपटल नियंत्रक एक प्रोसेसर है, वीडियो कार्ड GPUs है, आदि। अधिकांश हार्डवेयर चिप के कुछ प्रकार है कि कुछ प्रसंस्करण संभालती है।
Synetech

> सीपीयू से टकराने वाले सॉफ्टवेयर में IRQ को कैसे संसाधित किया जा सकता है? न केवल एक यूएसबी कीबोर्ड में उसके ड्राइवर होते हैं, बल्कि यूएसबी कंट्रोलर में ड्राइवर भी होते हैं। कीबोर्ड डेटा सीधे सीपीयू में नहीं जाता है, इसके बजाय यह कीबोर्ड के माध्यम से यूएसबी कंट्रोलर, अपने ड्राइवर तक, कीबोर्ड ड्राइव तक, फिर सीपीयू या अन्य सॉफ्टवेयर में आवश्यकतानुसार बनाता है, इसलिए कुछ चीजें जैसे Ctrl+Alt+Delडॉन ' एक हार्डवेयर लाइन के माध्यम से काम नहीं बल्कि सॉफ्टवेयर के माध्यम से संसाधित किया जाता है।
Synetech

इसलिए, यदि मैं आपको अच्छी तरह से बताता हूं कि मेरे कीस्ट्रोक का मूल डेटाफ़्लो होगा: USB कंट्रोलर, APIC, CPU इन-लो IRRQ, USB ISR / IST, CPU सेल्फ-जनरेट IRQ (जैसे TRAP), कीबोर्ड ISS / IST? इस तरह, प्रासंगिक प्राथमिकता USB नियंत्रक की है ..? मेरे प्रश्न में मुझे लगा कि USB नियंत्रक USB कीबोर्ड (s) को वास्तविक कीबोर्ड IRQ में बदल सकता है।
पीपीसी

14

संक्षिप्त जवाब

दोनों कीबोर्ड उपयोगकर्ता-स्तरीय कोड के लिए समान रूप से प्रदर्शन करेंगे। यदि आप डिवाइस ड्राइवर लिखते हैं, तो छोटे अंतर हो सकते हैं ( नैनो से माइक्रो पीसी पर सेकंड)। यदि सिस्टम हैंग होता है, तो दोनों कीबोर्ड समस्या का समाधान नहीं करेंगे। कठिन रिबूट के लिए जाओ।


लंबे उत्तर टीएल; डीआर;

एक बाधा क्या है?

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

यह काम किस प्रकार करता है?

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

सभी अलग-अलग व्यवधान अच्छी तरह से परिभाषित सीमित बाधित अनुरोध स्तर (IRQL) के अनुरूप हैं । उदाहरण के लिए x86 सिस्टम पर 32 IRQL हैं, और x64 और IA64 पर वास्तव में कम हैं - 16 IRQL। स्पष्ट रूप से, कि IRQLs की तुलना में अधिक हार्डवेयर डिवाइस और सॉफ़्टवेयर सेवाएँ हैं, जिसका अर्थ है कि सभी सिस्टम ऑब्जेक्ट IRQLs साझा करेंगे।

X64 के लिए IRQLs तालिका

    IRQL | विवरण
--------------------------------------------
    15 | उच्च प्रोफ़ाइल
    14 | इंटरप्रोसेसर बाधा / शक्ति
    13 | घड़ी
    12 | सिंक
    11 | डिवाइस एन
    .. | ...
     3 | डिवाइस 1
     2 | डिस्पैच / डीपीसी
     1 | एपीसी
     0 | निष्क्रिय / कम

उच्च IRQL (बड़ी संख्या के साथ) उच्च प्राथमिकता है। एक सिस्टम के सभी घटक एक प्रोसेसर के वर्तमान IRQL को न्यूनतम संभव स्तर पर रखने की कोशिश करते हैं - 0. यदि एक उच्च स्तर की बाधा उत्पन्न होती है, तो एक प्रोसेसर के वर्तमान IRQL स्तर को ऊपर उठाया जाता है और निचले स्तर के साथ व्यवधान को तब तक संभाला नहीं जाता है। उच्च स्तरों के साथ सभी व्यवधानों का समाधान किया जाता है। यदि IRQ शेड्यूलर निष्पादन के लिए समान स्तर के कई IRQ की कतार बनाने में सक्षम है, तो IRQ को बैच-हैंडल किया जा सकता है।

मुद्दा क्या है?

यह सब वास्तव में अच्छी तरह से हार्डवेयर की जटिलताओं से एंड-यूज़र को अलग करने और एक सार्वभौमिक वास्तुकला बनाने के लिए डिज़ाइन किया गया है जो कई प्रकार के हार्डवेयर / सॉफ़्टवेयर के साथ काम कर सकता है।

  1. उपयोगकर्ता-स्तरीय कोड (यानी कर्नेल-स्तर नहीं) केवल तभी निष्पादित किया जाता है जब प्रोसेसर पैसिव / लो (0) IRQL पर हो। बिंदु यह है कि, आप सभी IRQLs को संभालने के बाद अपने आवेदन में केवल एक कुंजी-दबाए गए ईवेंट को संभाल सकते हैं। इसलिए, एक कीबोर्ड के लिए यह मायने नहीं रखता है कि आईआरक्यूएल को हार्डवेयर इंटरप्ट को क्या सौंपा गया है।

  2. IRQL केवल OS एब्स्ट्रक्शन हैं और पत्थर में सेट नहीं हैं । इसके विपरीत IRQ और IRQL विंडोज रजिस्ट्री (उदाहरण के लिए) में संग्रहीत हैं, और कोई भी उत्साही उपयोगकर्ता उन्हें मैन्युअल रूप से बदल सकता है।

निष्कर्ष

प्रश्न से उद्धरण

क्योंकि USB कीबोर्ड एक USB जेनेरिक ड्राइवर और आर्किटेक्चर पर भरोसा करते हैं जिनकी केवल कुछ IRQ चैनलों तक पहुंच होती है, इसलिए यह कीबोर्ड को IRQ को प्राथमिकता-उच्च के रूप में एक्सेस नहीं दे सकता है (जैसे PS2) नियंत्रक।

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

क्या यह (यदि यह सच है) का अर्थ है कि यूएसबी कीबोर्ड किसी अन्य पोर्ट प्रकार पर प्लग किए गए कीबोर्ड की तुलना में कम उत्तरदायी होगा?

यह सच नहीं है क्योंकि जिस तरह से ओएस का डिज़ाइन किया गया है। यदि ओएस कुछ के साथ व्यस्त है और "धीमा" है, तो दोनों कीबोर्ड पहचान के साथ व्यवहार करेंगे।

उदाहरण के लिए एक यूएसबी कीबोर्ड को एक प्राथमिकता वाले IRQ में मैप किया गया है, जो एक दोषपूर्ण प्रणाली पर है जो एक अन्य मध्यम प्राथमिकता वाले रुकावट रूटीन पर अटक गया है

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

इसकी अपेक्षाकृत समान प्राथमिकता के कारण, कीबोर्ड की घटनाओं को नजरअंदाज कर दिया जाएगा और आप Ctrl-Alt-del या किसी अन्य आपातकालीन कीस्टेकेक को भेजने में सक्षम नहीं होंगे।

यदि सिस्टम हैंग होता है तो बहुत सारी चीजें हैं जो गलत हो सकती हैं, लेकिन सबसे अधिक संभावना है कि कीस्ट्रोक आईआरक्यूएल को चालक स्तर पर नियंत्रित किया जाएगा। समस्या यह है, यह ऐसे एप्लिकेशन को वितरित नहीं किया जाएगा जो इस तरह की अधिसूचना के लिए सदस्यता लेता है, क्योंकि ओएस कुछ और करने में व्यस्त है।


मैं जिस एप्लिकेशन को लक्षित कर रहा हूं वह विंडो मैनेजर (आसान मामला) या ओएस ही है। मुझे उम्मीद है कि मेरे सीपीयू को अपने यूएसबी-जैसे-आईआरक्यूएल प्रसंस्करण को साफ करने के लिए मेरे सिंक-डिस्क से पहले-आई-रिबूट-
पीपीसी

>> क्या इसका मतलब यह है कि USB kbds कम प्रतिक्रियाशील हैं: क्या आप अपने 'नहीं' उत्तर का विस्तार कर सकते हैं?
पीपीसी

@PPC यदि आप एक डिवाइस ड्राइवर डिज़ाइन करते हैं, तो USB kbds संभवत: नैनो- से माइक्रो सेकंड के लिए धीमा हो सकता है। यदि आप किसी भी उपयोगकर्ता-स्तरीय कोड में रुचि रखते हैं, तो कोड> स्तर 1 के किसी भी IRQL को संभाला जाता है। तो यह कोई फर्क नहीं पड़ता कि kbd IRQL उच्चतम IRQL या मध्यम IRQL के बराबर है। उपयोगकर्ता कोड अवरुद्ध है।
oleksii
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.