stringtranslate.com

Latencia de interrupción

En informática, la latencia de interrupción se refiere al retraso entre el inicio de una solicitud de interrupción (IRQ) y el inicio de la respectiva rutina de servicio de interrupción (ISR). [1] En 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 interrupciones , el enmascaramiento de interrupciones y los métodos de manejo de interrupciones del sistema operativo (OS). [2]

Fondo

Generalmente existe un equilibrio entre la latencia de las interrupciones, 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 las interrupciones reducirán el rendimiento y aumentarán la utilización del procesador. Las técnicas que aumentan el rendimiento pueden aumentar la latencia de las interrupciones y aumentar la utilización del procesador. Por último, intentar reducir la utilización del procesador puede aumentar la latencia de las interrupciones y reducir el rendimiento.

La latencia mínima de interrupción está determinada en gran medida por el circuito controlador de interrupciones y su configuración. También pueden afectar la fluctuación 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 en la 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 gestionar las 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, con el fin de proteger las secciones críticas del código. Durante la ejecución de una sección crítica de este tipo, todos los controladores de interrupciones que no se pueden ejecutar de forma segura dentro de una sección crítica se bloquean (guardan la cantidad mínima de información necesaria para reiniciar el controlador de interrupciones después de que hayan salido todas las secciones críticas). 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 prioridad igual o superior que haya llegado mientras el bloqueo estaba en su lugar.

Muchos sistemas informáticos requieren latencias de interrupción bajas, especialmente los sistemas integrados que necesitan controlar 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 especificada entre ejecuciones de subrutinas . Para lograrlo, el RTOS también debe garantizar que la latencia de interrupción nunca superará un máximo predefinido.

Consideraciones

Los controladores de interrupciones avanzados implementan una multitud de funciones de hardware para minimizar la sobrecarga durante los cambios de contexto y la latencia efectiva de las interrupciones. Estas incluyen funciones como:

Además, existen muchos otros métodos que el hardware puede utilizar para ayudar a reducir los requisitos de latencia de interrupción más corta para hacer que una latencia de interrupción dada sea tolerable en una situación. Estos incluyen búferes 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 almacenar datos 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 una 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 de tiempo programable entre cada interrupción que genera. La limitación de la tasa de interrupciones reduce la cantidad de tiempo que se dedica a atender las interrupciones, lo que permite que el procesador dedique más tiempo a realizar un trabajo útil. Si se excede este tiempo, se produce un error leve (recuperable) o grave (no recuperable).

Véase también

Referencias

  1. ^ abcdefghi Yiu, Joseph (1 de abril de 2016). "Guía para principiantes sobre latencia de interrupción y latencia de interrupción de los procesadores Arm Cortex-M". Comunidad Arm . Archivado desde el original el 15 de junio de 2019. Consultado el 15 de junio de 2019 .
  2. ^ 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". SAE Transactions . 108 : 2112–2125. ISSN  0096-736X. JSTOR  44733861.