Задержка прерываний: факторы и влияние на производительность
Interrupt latency
Задержка прерываний (interrupt latency) в вычислениях: причины, влияние на производительность CPU и ОС, компромиссы между задержкой, пропускной способностью и загрузкой.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
В вычислительной технике, задержка прерывания — это время между моментом возникновения запроса на прерывание (IRQ) и началом выполнения соответствующей подпрограммы обработки прерывания (ISR).
In computing, interrupt latency refers to the delay between the start of an Interrupt Request (IRQ) and the start of the respective Interrupt Service Routine (ISR).
Предыстория
Обычно существует компромисс между задержкой прерывания, пропускной способностью и загрузкой процессора. Многие методы проектирования процессоров и операционных систем, улучшающие задержку прерывания, снижают пропускную способность и увеличивают загрузку процессора. Методы, повышающие пропускную способность, могут увеличивать задержку прерывания и загрузку процессора. Наконец, попытка снизить загрузку процессора может приводить к увеличению задержки прерывания и снижению пропускной способности. Минимальная задержка прерывания во многом определяется схемой контроллера прерываний и его конфигурацией. Они также могут влиять на нестабильность (дрожание) задержки прерывания, что может существенно повлиять на возможность планирования задач в реальном времени. Архитектура Intel APIC хорошо известна тем, что генерирует значительную нестабильность задержки прерывания. Максимальная задержка прерывания во многом определяется методами, используемыми операционной системой для обработки прерываний. Например, большинство процессоров позволяют программам отключать прерывания, откладывая выполнение обработчиков прерываний, чтобы защитить критические участки кода. Во время выполнения такого критического участка все обработчики прерываний, которые не могут безопасно выполняться внутри критического участка, блокируются (они сохраняют минимальный объем информации, необходимый для возобновления выполнения обработчика прерывания после завершения всех критических участков). Таким образом, задержка прерывания для заблокированного прерывания увеличивается до конца критического участка, плюс время обработки любых прерываний с равным или более высоким приоритетом, поступивших во время блокировки. Многие компьютерные системы требуют низкой задержки прерывания, особенно встраиваемые системы, которым необходимо управлять оборудованием в реальном времени. Иногда в таких системах используется операционная система реального времени (RTOS). RTOS гарантирует, что между последовательными выполнениями подпрограмм не пройдет более определенного максимального времени. Для этого RTOS также должна гарантировать, что задержка прерывания никогда не превысит заранее заданный максимум.
There is usually a trade off between interrupt latency, throughput, and processor utilization. Many of the techniques of CPU and OS design that improve interrupt latency will decrease throughput and increase processor utilization. Techniques that increase throughput may increase interrupt latency and increase processor utilization. Lastly, trying to reduce processor utilization may increase interrupt latency and decrease throughput. Minimum interrupt latency is largely determined by the interrupt controller circuit and its configuration. They can also affect the jitter in the interrupt latency, which can drastically affect the real time schedulability of the system. The Intel APIC architecture is well known for producing a huge amount of interrupt latency jitter. Maximum interrupt latency is largely determined by the methods an OS uses for interrupt handling. For example, most processors allow programs to disable interrupts, putting off the execution of interrupt handlers, in order to protect critical sections of code. During the execution of such a critical section, all interrupt handlers that cannot execute safely within a critical section are blocked (they save the minimum amount of information required to restart the interrupt handler after all critical sections have exited). So the interrupt latency for a blocked interrupt is extended to the end of the critical section, plus any interrupts with equal and higher priority that arrived while the block was in place. Many computer systems require low interrupt latencies, especially embedded systems that need to control machinery in real time. Sometimes these systems use a real time operating system (RTOS). An RTOS makes the promise that no more than a specified maximum amount of time will pass between executions of subroutines. In order to do this, the RTOS must also guarantee that interrupt latency will never exceed a predefined maximum.