Casa > Exposició > Contingut

Latència d’interrupció del microcontrolador

Mar 08, 2019

A diferència dels ordinadors d'ús general, els microcontroladors utilitzats en sistemes embebits solen optimitzar la latència de les interrupcions sobre el rendiment de les instruccions. Els problemes inclouen tant la reducció de la latència com el fet de ser més previsible (per donar suport al control en temps real).


Quan un dispositiu electrònic provoca una interrupció, durant el canvi de context, els resultats intermedis (registres) s'han de desar abans que pugui funcionar el programari responsable de la manipulació de la interrupció. També s'han de restaurar després d’haver acabat el gestor d’interrupcions. Si hi ha més registres de processador, aquest procés de desar i restaurar triga més temps, augmentant la latència. Les maneres de reduir aquesta latència de context / restauració inclouen tenir relativament pocs registres en les seves unitats de processament central (no desitjades perquè alenteix la majoria dels processos no interromputs substancialment), o almenys que el maquinari no els estalvia tots (això falla si el programari necessita per compensar desant la resta "manualment"). Una altra tècnica consisteix a gastar portes de silici en "registres d'ombres": un o més registres duplicats utilitzats només pel programari d'interrupció, potser amb un paquet dedicat.


Altres factors que afecten la latència d’interrupció són:


Cicles necessaris per completar les activitats actuals de la CPU. Per minimitzar aquests costos, els microcontroladors tendeixen a tenir canonades curtes (sovint tres instruccions o menys), petits amortidors d’escriptura i asseguren que les instruccions més llargues siguin continuades o reorganitzables. Els principis de disseny de RISC garanteixen que la majoria de les instruccions tenen el mateix nombre de cicles, cosa que ajuda a evitar la necessitat de la majoria d’aquesta lògica de continuació / reinici.

La longitud de qualsevol secció crítica que cal interrompre. L’entrada a una secció crítica limita l’accés simultani a l’estructura de dades. Quan s'ha d’accedir a una estructura de dades mitjançant un gestor d’interruptes, la secció crítica ha de bloquejar l’interrupció. En conseqüència, la latència d’interrupció augmenta per molt de temps que l’interrupció s’hagi bloquejat. Quan hi ha restriccions externes dures en la latència del sistema, els desenvolupadors sovint necessiten eines per mesurar latències d'interrupció i localitzar quines seccions crítiques provoquen desacceleracions.

Una tècnica comuna només bloqueja totes les interrupcions durant la durada de la secció crítica. Això és fàcil d’implementar, però de vegades les seccions crítiques són incòmodes.

Una tècnica més complexa tan sols bloqueja les interrupcions que poden provocar l'accés a aquesta estructura de dades. Sovint es basa en prioritats d'interrupció, que tendeixen a no correspondre bé amb les estructures de dades del sistema pertinents. En conseqüència, aquesta tècnica s’utilitza principalment en entorns molt limitats.

Els processadors poden tenir suport de maquinari per a algunes seccions crítiques. Els exemples inclouen el suport de l’accés atòmic a bits o bytes dins d’una paraula, o altres primitives d’accés atòmic com les primitives d’accés exclusives LDREX / STREX introduïdes a l’arquitectura ARMv6.

Interromp el niu. Alguns microcontroladors permeten que les interrupcions de major prioritat interrompen les de menor prioritat. Això permet al programari gestionar la latència donant interrupcions crítiques de temps amb una prioritat superior (i, per tant, una latència més baixa i més previsible) que les menys crítiques.

Taxa d’activació. Quan les interrupcions es produeixen de nou, els microcontroladors poden evitar un cicle de recuperació / restauració de context addicional mitjançant una forma d’optimització de la trucada de cua.

Els microcontroladors d’extrem inferior tendeixen a suportar menys controls de latència d’interrupció que els de finalitats superiors.