Спорідненість і пріоритетність переривань
Відео: Easy AVR 2016-05-29 Переривання AVR. Частина 1. Теорія
На системах, що підтримують ACPI і містять APIC, Windows дозволяє розробникам драйверів і адміністраторам частково управляти спорідненістю процесорів (вибираючи процесор або групу процесорів, які отримують переривання) і політикою спорідненості (вибираючи спосіб, за допомогою якого відбудеться відбір процесорів, і визначиться, який процесор в групі буде обраний).
Більш того, він дозволяє використовувати примітивний механізм пріоритетності переривань на основі вибору IRQL. Політика спорідненості (affinity policy) визначається відповідно до даних, показаними в таблиці, і налаштовується за допомогою значення реєстру під назвою InterruptPolicyValueв підрозділі InterruptManagement AffinityPolicy розділу реєстру, що представляє пристрій.
Завдяки цьому для настройки не потрібно ніякого коду - адміністратор, щоб вплинути на поведінку пристрою, може додати це значення до розділу цього пристрою. Для всього цього Microsoft надає засіб під назвою Interrupt Affinity policy Tool, яке може бути завантажене з адреси
зміст:
- 1 Політика спорідненості IRQ.
- 2 Пріоритети IRQ.
Політика спорідненості IRQ.
політика | значення |
---|---|
IrqPolicyMachineDefault | Пристрою не потрібно якась особлива політика спорідненості. Windows використовує політику, наявну на машині за замовчуванням, яка (на машинах з менш ніж вісьмома логічними процесорами) полягає у виборі будь-якого доступного на машині процесора |
IrqPolicyAllCloseProcessors | На NUMA-машині диспетчер пристроїв Plug and Play призначає переривання всім процесорам, близьким до пристрою (на тому ж сайті). На машинах, які не мають NUMA-доступу, ця політика аналогічна політиці IrqPolicyAllProcessorsInMachine |
IrqPolicyOneCloseProcessor | На NUMA-машині диспетчер пристроїв Plug and Play призначає переривання одному процесору, який найближче до пристрою (на тому ж сайті). На машинах, які не мають NUMA-доступу, вибирається будь-який, доступний в системі процесор |
IrqPolicyAllProcessorsInMachine | Переривання обробляється будь-яким доступним на машині процесором |
IrqPolicySpecifiedProcessors | Переривання обробляється тільки одним з процесорів, зазначених в масці спорідненості в значенні реєстру AssignmentSetOverride |
IrqPolicySpreadMessagesAcrossAllProcessors | Різні переривання, ініційовані повідомленнями, розподіляються по оптимальному набору відповідних процесорів, погодившись, по можливості, з топологією NUMA. Для цього потрібна підтримка MSI-X на пристрої та на платформі |
Крім установки цієї політики спорідненості для установки пріоритетності переривань можна використовувати ще одне значення реєстру з тих, що показані в наступній таблиці.
Відео: Stm32 Урок 13: Переривання по передачі USART
Як вже зазначалось, важливо відзначити, що Windows не є операційною системою реального часу, і тому ці пріоритети IRQ - просто поради, що даються системі, яка управляє тільки IRQL, пов`язаних з перериванням, і не надає ніякої додаткової пріоритетності, крім наявного в Windows механізму схеми пріоритетів. Оскільки пріоритетність IRQ також зберігається в реєстрі, адміністратори мають право встановлювати ці значення для драйверів з вимогою більш низького рівня латентності для тих драйверів, які не користуються можливістю зберігання даних в реєстрі.
Пріоритети IRQ.
пріоритет | значення |
---|---|
IrqPriorityUndefined | Пристрою ніяка особлива пріоритетність не потрібно. Воно приймає пріоритети, встановлені за замовчуванням (IrqPriorityNormal) |
IrqPriorityLow | Для пристрою цілком прийнятні великі затримки, і воно повинно отримати більш низький рівень IRQL, ніж зазвичай |
IrqPriorityNormal | Пристрій очікує середній час затримки. Воно отримує IRQL-рівень, який встановлюється за умовчанням і пов`язаний з його вектором переривання |
IrqPriorityHigh | Пристрій вимагає якомога меншої часу затримки. Воно отримує підвищений рівень IRQL, що перевищує зазвичай призначається рівень |