Latencia de interrupción
En computación, latencia de interrupción se refiere al retraso entre el inicio de una Solicitud de Interrupción (IRQ) y el inicio de la Rutina de Servicio de Interrupción (ISR) respectiva. Para muchos sistemas operativos, los dispositivos reciben servicio tan pronto como se ejecuta el controlador de interrupciones del dispositivo. La latencia de interrupción puede verse afectada por el diseño del microprocesador, los controladores de interrupción, el enmascaramiento de interrupción y los métodos de manejo de interrupción del sistema operativo (SO).
Antecedentes
Por lo general, existe una compensación entre la latencia de interrupción, el rendimiento y la utilización del procesador. Muchas de las técnicas de diseño de CPU y SO que mejoran la latencia de interrupción disminuirán el rendimiento y aumentarán la utilización del procesador. Las técnicas que aumentan el rendimiento pueden aumentar la latencia de interrupción y aumentar la utilización del procesador. Por último, tratar de reducir la utilización del procesador puede aumentar la latencia de interrupción y disminuir el rendimiento.
La latencia de interrupción mínima está determinada en gran medida por el circuito controlador de interrupción y su configuración. También pueden afectar el jitter en la latencia de interrupción, lo que puede afectar drásticamente la capacidad de programación en tiempo real del sistema. La arquitectura Intel APIC es bien conocida por producir una gran cantidad de fluctuaciones de latencia de interrupción.
La latencia máxima de interrupción está determinada en gran medida por los métodos que utiliza un sistema operativo para el manejo de interrupciones. Por ejemplo, la mayoría de los procesadores permiten que los programas deshabiliten las interrupciones, posponiendo la ejecución de los controladores de interrupciones, para proteger las secciones críticas del código. Durante la ejecución de una sección crítica de este tipo, se bloquean todos los manejadores de interrupciones que no pueden ejecutarse de manera segura dentro de una sección crítica (guardan la cantidad mínima de información necesaria para reiniciar el manejador de interrupciones después de que todas las secciones críticas hayan salido). Entonces, la latencia de interrupción para una interrupción bloqueada se extiende hasta el final de la sección crítica, más cualquier interrupción con igual o mayor prioridad que llegó mientras el bloqueo estaba en su lugar.
Muchos sistemas informáticos requieren latencias de interrupción bajas, especialmente los sistemas integrados que necesitan controlar la maquinaria en tiempo real. A veces, estos sistemas utilizan un sistema operativo en tiempo real (RTOS). Un RTOS promete que no pasará más de una cantidad máxima de tiempo entre las ejecuciones de las subrutinas. Para hacer esto, el RTOS también debe garantizar que la latencia de interrupción nunca exceda un máximo predefinido.
Consideraciones
Los controladores de interrupción avanzados implementan una multitud de funciones de hardware para minimizar la sobrecarga durante los cambios de contexto y la latencia de interrupción efectiva. Estos incluyen características como:
- Montaje mínimo a través de instrucciones no interrumpidas
- Zero Wait declara el sistema de memoria
- Bancos de registro intercambiables
- Cadena de cola
- Apilación perezosa
- Llegada tarde
- Preparación del Pop
- Función de sueño a salida
Además, hay muchos otros métodos que el hardware puede usar para ayudar a reducir los requisitos de una latencia de interrupción más corta para que una latencia de interrupción determinada sea tolerable en una situación. Estos incluyen buffers y control de flujo. Por ejemplo, la mayoría de las tarjetas de red implementan búferes circulares de transmisión y recepción, limitación de tasa de interrupción y control de flujo de hardware. Los búferes permiten que los datos se almacenen hasta que se puedan transferir, y el control de flujo permite que la tarjeta de red pause las comunicaciones sin tener que descartar datos si el búfer está lleno.
El hardware moderno también implementa la limitación de la tasa de interrupciones. Esto ayuda a prevenir tormentas de interrupciones o bloqueos en vivo al hacer que el hardware espere una cantidad de tiempo mínima programable entre cada interrupción que genera. La limitación de la tasa de interrupción reduce la cantidad de tiempo dedicado a atender las interrupciones, lo que permite que el procesador dedique más tiempo a realizar un trabajo útil. Superar este tiempo da como resultado un error suave (recuperable) o duro (no recuperable).
Contenido relacionado
Modchip
PHP-Nuke
Sociocibernética