En informática, la latencia de interrupción es el tiempo que transcurre desde que se genera una interrupción hasta que se da servicio a la fuente de la interrupción. [1] Para muchos sistemas operativos, los dispositivos reciben servicio tan pronto como se ejecuta el manejador 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 interrupciones y los métodos de manejo de interrupciones del sistema operativo (SO). [2]
Fondo
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 interrupciones disminuirán el rendimiento y aumentarán la utilización del procesador. Las técnicas que aumentan el rendimiento pueden aumentar la latencia de interrupciones y aumentar la utilización del procesador. Por último, intentar reducir la utilización del procesador puede aumentar la latencia de interrupción y disminuir el rendimiento.
La latencia mínima de interrupción está determinada en gran medida por el circuito del controlador de interrupciones 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 fluctuación de latencia de interrupción. [ cita requerida ]
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 manejadores de interrupciones, con el fin de proteger las secciones críticas del código. Durante la ejecución de una sección tan crítica, 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 requerida para reiniciar el manejador de interrupciones después de que todas las secciones críticas hayan salido). Por lo tanto, 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 y 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 un tiempo máximo especificado entre ejecuciones de 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 interrupciones avanzados implementan una multitud de características de hardware para minimizar la sobrecarga durante los cambios de contexto y la latencia de interrupción efectiva. Estos incluyen características como:
- Fluctuación mínima a través de instrucciones no interrumpibles [1]
- Estados de espera cero para el sistema de memoria [1]
- Bancos de registro conmutables [1]
- Encadenamiento de cola [1]
- Apilamiento lento [1]
- Llegada tardía [1]
- Prevención de pop [1]
- Función dormir al salir [1]
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 con el fin de hacer que una latencia de interrupción determinada sea tolerable en una situación. Estos incluyen tampones y control de flujo . Por ejemplo, la mayoría de las tarjetas de red implementan búferes de anillo de transmisión y recepción , limitación de la tasa de interrupciones 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 evitar tormentas de interrupciones o bloqueos activos al hacer que el hardware espere una cantidad mínima programable de tiempo entre cada interrupción que genera. La limitación de la tasa de interrupciones reduce la cantidad de tiempo dedicado al mantenimiento de las interrupciones, lo que permite que el procesador dedique más tiempo a realizar un trabajo útil. Exceder este tiempo da como resultado un error leve (recuperable) o grave (no recuperable).
Ver también
- Controlador de interrupciones programable avanzado (APIC)
- Control de flujo de Ethernet
- IEEE 802.3 (tramas de PAUSA 802.3x para control de flujo)
- Interrupción entre procesadores (IPI)
- Interrumpir
- Controlador de interrupciones
- Interrupción no enmascarable (NMI)
- Controlador de interrupción programable (PIC)
- Tiempo de respuesta (tecnología)
- Latencia (ingeniería)
- Latencia del sistema operativo y del hardware de la computadora
Referencias
- ↑ a b c d e f g h i Yiu, Joseph (1 de abril de 2016). "Una guía para principiantes sobre la latencia de interrupción y la latencia de interrupción de los procesadores Arm Cortex-M" . Arm Community . Archivado desde el original el 15 de junio de 2019 . Consultado el 15 de junio de 2019 .
- ^ Lin, Feng; Ashley, David T .; Burke, Michael J .; Heymann, Michael (1999). "Una solución de sistema híbrido del problema de compatibilidad de latencia de interrupción". Transacciones SAE . 108 : 2112–2125. ISSN 0096-736X . JSTOR 44733861 .