Latència d'interrupció
En informàtica, la latència d'interrupció es refereix al retard entre l'inici d'una sol·licitud d'interrupció (IRQ) i l'inici de la respectiva rutina de servei d'interrupció (ISR).[1] Per a molts sistemes operatius, els dispositius reben servei tan aviat com s'executa el controlador d'interrupcions del dispositiu. La latència d'interrupció es pot veure afectada pel disseny del microprocessador, els controladors d'interrupció, l'emmascarament d'interrupcions i els mètodes de gestió d'interrupcions del sistema operatiu (SO).[2]
Rerefons
[modifica]Normalment hi ha un compromís entre la latència d'interrupció, el rendiment i la utilització del processador. Moltes de les tècniques de disseny de CPU i SO que milloren la latència d'interrupció reduiran el rendiment i augmentaran la utilització del processador. Les tècniques que augmenten el rendiment poden augmentar la latència d'interrupció i augmentar la utilització del processador. Finalment, intentar reduir la utilització del processador pot augmentar la latència d'interrupció i reduir el rendiment.[3]
La latència d'interrupció mínima està determinada en gran manera pel circuit del controlador d'interrupció i la seva configuració. També poden afectar la fluctuació de la latència d'interrupció, que pot afectar dràsticament la programació en temps real del sistema. L'arquitectura Intel APIC és coneguda per produir una gran quantitat de fluctuacions de latència d'interrupció.
La latència d'interrupció màxima està determinada en gran manera pels mètodes que utilitza un sistema operatiu per a la gestió d'interrupcions. Per exemple, la majoria dels processadors permeten que els programes desactivin les interrupcions, posposant l'execució dels controladors d'interrupcions, per tal de protegir les seccions crítiques del codi. Durant l'execució d'una secció tan crítica, es bloquegen tots els controladors d'interrupcions que no poden executar-se de manera segura dins d'una secció crítica (desen la quantitat mínima d'informació necessària per reiniciar el controlador d'interrupcions després d'haver sortit totes les seccions crítiques). Així, la latència d'interrupció per a una interrupció bloquejada s'estén fins al final de la secció crítica, a més de qualsevol interrupció amb prioritat igual o superior que va arribar mentre el bloc estava al seu lloc.
Molts sistemes informàtics requereixen baixes latències d'interrupció, especialment sistemes encastats que necessiten controlar la maquinària en temps real. De vegades, aquests sistemes utilitzen un sistema operatiu en temps real (RTOS). Un RTOS promet que no passarà més d'un temps màxim especificat entre execucions de subrutines. Per fer-ho, el RTOS també ha de garantir que la latència d'interrupció no superi mai un màxim predefinit.[4]
Consideracions
[modifica]Els controladors d'interrupció avançats implementen multitud de funcions de maquinari per minimitzar la sobrecàrrega durant els canvis de context i la latència d'interrupció efectiva. Aquests inclouen funcions com:
- Trepitjada mínima mitjançant instruccions no interruptibles
- Estats d'espera zero per al sistema de memòria
- Bancs de registre commutables
- Encadenament de la cua
- Apilament mandrós
- Arribada tardana
- Preempció pop
- Funció de dormir a la sortida
A més, hi ha molts altres mètodes que el maquinari pot utilitzar per ajudar a reduir els requisits d'una latència d'interrupció més curta per tal de fer que una latència d'interrupció determinada sigui tolerable en una situació. Aquests inclouen els buffers i el control de flux. Per exemple, la majoria de targetes de xarxa implementen buffers d'anell de transmissió i recepció, limitació de velocitat d'interrupció i control de flux de maquinari. Els buffers permeten emmagatzemar dades fins que es puguin transferir, i el control de flux permet que la targeta de xarxa interrompi les comunicacions sense haver de descartar dades si la memòria intermèdia està plena.
El maquinari modern també implementa la limitació de la velocitat d'interrupció. Això ajuda a prevenir tempestes d'interrupcions o bloquejos en viu fent que el maquinari esperi un temps mínim programable entre cada interrupció que genera. La limitació de la velocitat d'interrupció redueix la quantitat de temps dedicat al servei d'interrupcions, la qual cosa permet que el processador passi més temps fent treballs útils. Si supera aquest temps, es produeix un error suau (recuperable) o dur (no recuperable).
Referències
[modifica]- ↑ «What is Interrupt Latency?» (en anglès americà), 30-01-2023. [Consulta: 3 desembre 2023].
- ↑ Lin, Feng; Ashley, David T.; Burke, Michael J.; Heymann, Michael SAE Transactions, 108, 1999, pàg. 2112–2125. ISSN: 0096-736X. JSTOR: 44733861.
- ↑ Ganssle, Jack. «Interrupt Latency» (en anglès americà), 01-10-2001. [Consulta: 3 desembre 2023].
- ↑ «Beginner guide on interrupt latency and Arm Cortex-M processors - Architectures and Processors blog - Arm Community blogs - Arm Community» (en anglès), 01-04-2016. [Consulta: 3 desembre 2023].