Архітектура комп’ютера: Чи менш клавішні USB-клавіатури через вузький діапазон IRQ?


19

Ось твердження, про яке я тільки думав. Хтось може мені сказати, чи це, і чому, це правда?

Заява: Оскільки USB-клавіатури покладаються на загальний USB-драйвер та архітектуру, яка має доступ лише до нижчих рівнів IRQ, вона не може надати клавіатурі доступ до IRQ таким пріоритетним, як інший (скажімо, PS2) контролер.

Чи означає це (якщо це правда), що клавіатури USB мали б нижчий пріоритет (з точки зору доступності більше швидкості), ніж клавіатури, підключені до іншого типу порту (наприклад, PS2)?

Візьмемо, наприклад, USB-клавіатуру, відображену на середній пріоритет IRQ, у несправній системі, яка застрягла в іншому режимі переривання середнього пріоритету. Через відносно однаковий пріоритет події на клавіатурі будуть ігноруватися, і ви не зможете надіслати Ctrl-Alt-del або будь-який інший екстрений набір клавіш. Якщо клавіатура мала більш високий пріоритет, система могла б увійти в порядок натискання клавіш Переривання.

Або у USB-контролера є достатній діапазон IRQ (будь то безперервний пріоритет, чи ні), щоб він надав вашій клавіатурі пріоритет, який він потребує (в основному трохи нижче відключення живлення)?

А як щодо віртуальних клавіатур, відображених через мережеве з'єднання на віддаленому сеансі робочого столу?

EDIT: Моє запитання не в тому, що стосується швидкості (див. Коментарі): головне питання: чи має PS2-клавіатура більше шансів поговорити з процесором, який застряг десь на пріоритеті переривання, вищому за USB та нижче клавіатури?


2
Цікаво, чи те ж саме стосується USB-мишей. Моє, звичайно, здається таким після переключення інтерфейсу (але не самої миші) кілька місяців тому.
мартіно

Якщо це правда для клавіатури, це, мабуть, те саме для мишей; але, мабуть, менш важливо, оскільки не існує екстрених натискань клавіш для миші
КПП

Я не думаю, що це щось розумне турбувати. Якщо ви зробили це, а клавіатура застрягла, то мережеві інтерфейси будуть голодувати, і ви не могли дистанційно керувати системою. Схоже, ви просто торгуєте однією проблемою за іншою.
Девід Шварц

1
@DavidSchwartz: Це здебільшого теоретичне питання, яке береться з точки зору архітектора комп'ютера. І все-таки є один додаток користувача PoV: "мій комп'ютер застряг, не відповідає Ctrl-Alt-Backspace: я повинен шукати клавіатуру PS2 або забути її і важко перезавантажити"
PPC

2
@PPC: Ctl-alt-del, швидше за все, не працюватиме. Процес перезавантаження контролюється програмним забезпеченням високого рівня, яке вимикає програми, промиває кеші тощо. При штормі перерви програмне забезпечення високого рівня не працюватиме.
Девід Шварц

Відповіді:


17

Йдеться не про діапазон IRQ, а про три основні фактори:

  1. Кількість скупченості автобуса
  2. Кількість даних
  3. Довжина шляху даних

Раніше клавіатури та миші мали б виділений IRQ (IRQ1 для клавіатур, IRQ12 для мишей PS / 2).

Це означало, що при натисканні клавіші вона мала майже пряму лінію до центрального процесора (через PIC; але все-таки лише один стрибок убік). Це дозволило дуже швидко обробляти події на клавіатурі апаратними засобами, тим більше, що вона мала IRQ1. (Звичайно, це стосується звичайного використання клавіатури та ігнорує рядок скидання, який переходить від контролера клавіатури безпосередньо до процесора.)

З іншого боку, USB-пристрої мають спільну шину та IRQ USB-контролера (який, як правило, є одним із керуючих пристроїв IRQ, який використовується спільно з іншими пристроями, такими як NIC, відеокарти тощо). Таким чином, при USB-клавіатурі події переходять від контролера клавіатури, через шину USB до контролера USB-хоста, звідти - до вторинного PIC, потім до головного PIC, потім або до драйверів в ОС або BIOS , потім на процесор. Крім того, є дані про перевірку помилок, додані до даних, переданих через USB.

Іншими словами, з клавіатурою USB відбувається просто більше, ніж з клавіатурою AT або PS / 2. Шлях даних довший і більше даних, і, можливо, доведеться навіть пройти програмне забезпечення . Навіть незважаючи на те, що пропускна здатність USB є достатньо великою, наявність інших пристроїв на тому ж порту спричиняє зіткнення та затримки (ви можете додати концентратор, але всі порти на ньому все ще мають один і той же порт на контролері). Так що чекає набагато більше.

Крім того, маючи свою власну (IRQ означала, що старша клавіатура може переривати обробку процесора, коли це потрібно. За допомогою USB-клавіатури немає такого механізму і може лише надсилати деякі дані і чекати / сподіватися, що USB-контролер перерве процесор. в деякій точці.

Віртуальні клавіатури ще гірші, тому що вони, безумовно, проходять програмне забезпечення, яке, звичайно, не може конкурувати з апаратною лінією.

Ось проста візуалізація різниці між AT або PS / 2 клавіатурою та USB клавіатурою:

введіть тут опис зображення


Я не настільки швидкий, ніж пріоритетний: я розумію, що довший шлях даних може змусити мого натискання клавіші чекати; але я думаю про "шанси втрати натискання клавіші на несправній системі", що, на мою думку, не залежить від довжини шляху.
КПП

Як можна обробити IRQ програмним забезпеченням перед тим, як потрапити на процесор? Чи мають APIC власні процесори? З їх рутинами в центральній пам'яті? Вони "запозичують" час процесора?
КПП

> "шанси втрати натискання клавіші на несправній системі" Це залежить від несправності, але так, очевидно, що USB-клавіатура має набагато більший шанс втратити натискання клавіш через додаткову складність. > Re: APICs Так, у них є процесор, який виконує певний рівень обробки, подібно до того, як у контролера клавіатури є процесор, у відеокарт є графічні процесори тощо. Більшість апаратних засобів має якийсь чіп, який обробляє деяку обробку.
Synetech

> Як можна обробити IRQ програмним забезпеченням перед тим, як натиснути на процесор? Не тільки USB-клавіатура має свої драйвери, але і USB-контролер має і драйвери. Дані про клавіатуру не надходять прямо до процесора, натомість вони пробиваються через клавіатуру до USB-контролера, до його драйвера, до приводу клавіатури, потім до процесора чи іншого програмного забезпечення за необхідності, тому деякі речі, наприклад, Ctrl+Alt+Delне ' t працювати за допомогою апаратної лінії, але досить обробляється через програмне забезпечення.
Synetech

Отже, якщо я добре зрозумію, основним потоком даних мого натискання клавіш буде: USB-контролер, APIC, процесор через низький IRQ, USB ISR / IST, IRQ власного генерування процесора (як TRAP), клавіатура ISR / IST? Таким чином, відповідним пріоритетом є USB-контролер ..? У своєму запитанні я думав, що USB-контролер може перевести USB-пакет (и) на справжню IRQ клавіатури.
КПП

14

Коротка відповідь

Обидві клавіатури виконували б абсолютно однаково для коду рівня користувача. Можливі невеликі відмінності ( нано- та мікросекунди на сучасному ПК), якщо ви пишете драйвери пристроїв. Якщо система висить, обидві клавіатури не вирішили б проблему. Перейдіть на жорстку перезавантаження.


Довга відповідь TL; DR;

Що таке перерва?

Коли апаратне забезпечення (або якийсь критичний фрагмент внутрішнього програмного забезпечення ОС, наприклад ядро) вимагає послуги процесора, воно викликає повідомлення або переривання , яке вимагає від процесора відкласти все, що він робить, і обробляє цей запит.

Як це працює?

Коли апаратне забезпечення генерує переривання (наприклад, натискання клавіші), цей запит переходить у контролер переривання. Потім контролер негайно перериває процесор на одному рядку свого машинного коду (процесор все ще виконує цей останній рядок). Як тільки процесор готовий обслуговувати цей запит, він запитує контролер переривання для запиту на переривання (IRQ) та режиму обробки. Контролер переривання має внутрішню структуру даних - Таблиця диспетчера переривань, яка містить вказівник на процедуру, яка повинна бути виконана ЦП для певного IRQ.

Всі різні переривання відповідають чітко визначеному обмеженому рівню запиту на переривання (IRQL). Наприклад, у x86 системах є 32 IRQL, а на x64 та IA64 насправді менше - 16 IRQL. Зрозуміло, що існує більше апаратних пристроїв та програмних сервісів, ніж IRQL, що означає, що всі деякі системні об'єкти поділяться IRQL.

Таблиця IRQL для x64

    IRQL | Опис
--------------------------------------------
    15 | Високий профіль
    14 | Міжпроцесорний перерив / живлення
    13 | Годинник
    12 | Синхронізація
    11 | Пристрій N
    .. | ...
     3 | Пристрій 1
     2 | Відправлення / DPC
     1 | APC
     0 | Пасивний / низький

Більш високий пріоритет мають вищі IRQL (з більшою кількістю). Усі компоненти системи намагаються підтримувати поточний IRQL процесора на найнижчому можливому рівні - 0. Якщо трапляється переривання більш високого рівня, то поточний рівень IRQL процесора підвищується, а переривання з нижчим рівнем не обробляються, поки всі переривання з більш високими рівнями вирішуються. IRQ може бути оброблена в пакетному режимі, якщо планувальник IRQ може виконати чергу декількох IRQ одного рівня для виконання процесора.

У чому сенс?

Це все було дійсно добре розроблено, щоб відокремити кінцевого споживача від складних апаратних засобів та створити універсальну архітектуру, яка може працювати з багатьма типами апаратного / програмного забезпечення.

  1. Код рівня користувача (тобто не на рівні ядра) виконується лише тоді, коли процесор знаходиться на IRQL Passive / Low (0). Справа в тому, що ви можете обробляти події, натиснуті на клавішу у вашій програмі, лише після обробки всіх IRQL. Тому для клавіатури не має значення, який IRQL призначений для апаратного переривання.

  2. IRQL - це лише абстракції ОС і не встановлені в камені . Відповідні IRQ та IRQL зберігаються в реєстрі Windows (наприклад), і будь-який захоплений користувач може змінити їх вручну.

Висновки

Цитати з питання

Оскільки USB-клавіатури покладаються на загальний USB-драйвер та архітектуру, яка має доступ лише до кількох каналів IRQ, вона не може надати клавіатурі доступ до IRQ настільки високим пріоритетом, як інший (скажімо, PS2) контролер.

Можливо, автор мав на увазі нижчу IRQL замість меншої кількості каналів IRQ . У будь-якому разі це не має особливого значення, оскільки його не видно користувачеві на будь-якому сучасному ПК. Можливі відмінності є нано- та мікросекундними, і вони відбуваються лише на рівні ядра. В обох випадках код рівня користувача блокується ядром ОС.

Чи означає це (якщо це правда), що USB-клавіатури будуть менш чуйними, ніж клавіатури, підключені до іншого типу порту?

Це неправда через те, як створено ОС. Якщо ОС чимось зайнята і працює "повільно", обидві клавіатури поводитимуться однаково.

Візьмемо, наприклад, USB-клавіатуру, зіставлену на IRQ середнього пріоритету, у несправній системі, яка застрягла в іншому рутині переривання середнього пріоритету

У цьому випадку система BSOD, IRQ процедури обробки повинні бути розроблені до певного стандарту (наприклад, вони повинні бути швидкими, синхронними, не блокуючими тощо). Будь-яке відхилення від цього і ядро ​​BSOD.

Через відносно однаковий пріоритет події на клавіатурі будуть ігноруватися, і ви не зможете надіслати Ctrl-Alt-del або будь-який інший екстрений набір клавіш.

Якщо система висить, існує багато речей, які можуть піти не так, але, швидше за все, IRQL натискання клавіш буде оброблено на рівні драйверів. Проблема в тому, що вона не буде доставлена ​​до програми, яка підписалася на таке повідомлення, оскільки ОС зайнята чимось іншим.


Додаток, на який я націлююсь, - це менеджер вікон (простий випадок) або сама ОС. Я очікую, що мій процесор відмовиться від обробки USB-подібної IRQL, щоб чисто отримувати мої синхронізаційні диски перед тим, як я перезавантажую вас
PPC

>> Чи означає це .. означає, що USB kbds менш чуйні: чи можете ви детально відповісти "ні"?
КПП

@PPC, якщо ви розробляєте драйвер пристрою, то USB kbds може бути повільнішим на нано- та мікросекунди. Якщо вас цікавить будь-який код рівня користувача, він залишається заблокованим під час обробки будь-якого IRQL рівня> 1. Тож не має значення, чи kbd IRQL дорівнює найвищому IRQL або середньому IRQL. Користувацький код заблокований.
олексій
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.