Sistemi di interruzioni - latenza, nesting e sostenibilità
In questa pagina 5
Questa nota quantifica quanto detto in Sottosistema di I-O - polling, interruzioni e DMALe periferiche si collegano al bus con una interfaccia che ha registri di dati (DREG), controllo (CREG) e stato (SREG); nei µC e DSP sono mappati in memoria (si leggono e scrivono come locazioni). Poiché le periferiche sono asincrone e lente, la sincronizzazione avviene per polling (inefficiente), per interruzioni (la più usata) o per DMA (costoso, per grandi quantità di dati). Una interruzione: completa l'istruzione, salva il contesto (PC e registro di stato, spesso altro), esegue la ISR, ripristina. Le sorgenti si distinguono con ISR di stato, interruzioni vettorizzate o daisy-chaincollegamento delle periferiche in catena, in cui il segnale di riconoscimento passa dall'una all'altra; le NMI non sono mascherabili.Sottosistema di I-O - polling, interruzioni e DMA →: quanto tempo passa tra la richiesta di una interruzione e l'inizio della sua routine di servizio, e quando un insieme di sorgenti di interruzione è gestibile senza perdere richieste. È una domanda presente in ogni appello di Elettronica Industriale.
Nesting e priorità
Le sorgenti hanno una priorità; per convenzione nelle tabelle "prioritàordine con cui sono servite le richieste: 1 è la più alta 1" è la più alta. Due strategie di gestione:
- senza nesting: una ISR in corso non viene mai interrotta. Le richieste che arrivano nel frattempo restano pendenti e sono servite in ordine di priorità alla fine della ISR. Se più richieste sono pendentirichieste arrivate ma non ancora servite, in attesa che la CPU sia libera si serve prima quella di priorità maggiore.
- con nesting (annidamento): una richiesta di priorità maggiore interrompe subito la ISR in corso (quelle di priorità minore restano pendenti fino al termine). Il nesting serve a servire nel minimo tempo le interruzioni di alta priorità; può penalizzare quelle di bassa priorità. Se tutte le ISR sono brevi, anche la gestione senza nesting dà buone prestazioni (il massimo ritardo è breve). Molti DSP offrono solo la gestione senza nesting; Cortex-M3, Freescale 56F8xx e AD 21xx offrono il nesting.
Tempo di latenza
Il tempo di latenzatempo tra la richiesta di interruzione e la prima istruzione della sua ISR è il tempo tra la richiesta di interruzione e l'esecuzione della prima istruzioneoperazione elementare del processore: la CPU finisce quella in corso prima di servire l'interruzione della sua ISR. Ha una componente intrinseca dovuta al salvataggio del contestocopia in memoria (o in registri alternativi) dello stato del programma interrotto (PC, SR, registri), automatico o da programma; minimizzarla è importante (nei µC con vettorizzazione e salvataggio automatico è piccola). Le interruzioni di priorità più bassa hanno latenze crescenti.
Detto il tempo di esecuzione (corpo) della ISR della priorità , nel caso peggiore (tutte le ISR di priorità maggiore attive):
- con nesting, per la priorità :
- senza nesting: perché la richiesta può arrivare quando è appena partita la ISR più lunga di quelle di priorità più bassa (che non si può interrompere). Anche l'interruzione di priorità più alta ha latenza superiore a , per due motivi: le interruzioni possono essere disabilitate per proteggere una regione criticatratto di programma che non deve essere interrotto, e per cui le interruzioni sono disabilitate () e la CPU deve completare l'istruzione in corso (la più lunga dura ). Nel caso peggiore (per la priorità 1).
Nelle formule che seguono è la durata complessiva della richiesta : per l'utilizzo si usa (tempo in cui la CPU lavora per quella sorgente), per la condizione di intervallo si aggiunge anche l'istruzione in corso, . Nei temi d'esame la tabella spesso dà già "durate comprensive di tutto": allora si usa quel valore ovunque. Quando il testo chiede "la percentuale di tempo dedicata all'esecuzione delle ISR" si usano soltanto i .
Esempio (tema d'esame settembre 2020). Tre attività, nessun nesting: conversione AD + PI (125 µs, 300 Hz, priorità 1), trasmissione seriale (120 µs, 300 Hz, priorità 2), lettura del riferimento (60 µs, 20 Hz, priorità 3). Percentuale di utilizzo: µs al secondo . Latenze massime (senza nesting): priorità 1: µs; priorità 2: µs; priorità 3: µs.
Sostenibilità: quando nessuna richiesta viene persa
Il sistema deve riuscire a servire tutte le richieste. Due condizioni, la prima necessaria ma non sufficiente.
1) Densità delle interruzioni (utilizzo della CPU): con il periodo minimoil minimo intervallo di tempo tra due richieste successive della stessa sorgente di ripetizione della richiesta (inverso della frequenza massima). La somma è la percentuale di tempo che la CPU dedica alle ISR.
2) Condizione di intervallo, per ciascuna interruzione (non basta la prima perché richieste di priorità più alta, sommandosi, possono impedire di servire la -esima nel suo periodo): è il numero di volte in cui la richiesta di priorità maggiore può verificarsi nell'intervallo : (le slide scrivono , che coincide con per rapporti non interi e dà un'unità in più per rapporti interi; nei temi si usa il rapporto stesso quando è intero: per esempio vale ). Il termine con il massimo c'è solo senza nesting (la ISR in corso, di priorità più bassa, non si può interrompere), mentre con nesting è assente.
Procedura per l'esame:
- calcolare la somma (se : non sostenibile, stop);
- per ogni calcolare il primo membro della condizione di intervalloverifica che una ISR riesca a finire entro il periodo di ripetizione, tenendo conto delle ISR di priorità maggiore (con o senza nesting) e confrontarlo con ;
- per una massima durata o una massima frequenza (minimo ) di una sorgente, imporre l'uguaglianza in tutte le condizioni in cui o compare e prendere la più restrittiva (tipicamente quella della priorità più bassa, che raccoglie le richieste di tutte le altre).
Esempio 1: due sorgenti senza nesting
Due interruzioni vettorizzatecon una linea di richiesta per ogni sorgente e salto automatico alla routine giusta (priorità 1 e 2, senza nesting), richieste ogni 100 µs, regione critica di 20 µs nel programma principale. Condizioni: (1) µs; (2) µs. La seconda è più restrittiva: µs.
Esempio 2: tre sorgenti (tema d'esame gennaio 2026)
| priorità | durata [µs] | periodo [µs] | |
|---|---|---|---|
| IRQ1 | 1 | 3 | 10 |
| IRQ2 | 2 | 5 | 20 |
| IRQ3 | 3 | 25 | 500 |
Utilizzo: .
Senza nesting: per IRQ1: ✗. Non sostenibile: la ISR3, lunga 25 µs e non interrompibile, può ritardare l'IRQ1 oltre il suo periodo.
Con nesting: IRQ1: ✓. IRQ2: con : ✓. IRQ3: con , : ✓. Sostenibile con nesting.
Massima durata di ISR2 (con nesting): IRQ2 chiede ; IRQ3 chiede µs: vale 13 µs (la condizione dell'IRQ3 è la più restrittiva).
Massima frequenza di IRQ1 (con nesting): IRQ1: ; IRQ2: ; IRQ3: µs. Quindi kHz.
Esempio 3: dalla percentuale di impegno alle durate
Se le durate sono proporzionali (, , ) con µs, µs, µs e l'impegno complessivo è del 75%: µs, µs, µs. Senza nesting: per IRQ1 ✗; con nesting: IRQ2 , IRQ3 ✓.
Interruzioni e temporizzazione di un algoritmo
Un algoritmo di filtraggio o controllo posto nella ISR dell'ADC deve terminare entro il periodo di campionamento, tenendo conto delle latenze e delle ISR di priorità maggiore: altrimenti si perdono campioni e la frequenza di calcolo non è più costante. Buona pratica: associare all'ADC l'interruzione di priorità più alta. Per misurare la durata reale di un segmento di codice si usa un pin di I/O (acceso all'inizio, spento alla fine) e un oscilloscopiostrumento che mostra l'andamento nel tempo di un segnale elettrico: permette anche di scoprire occasionali variazioni (jitter, glitchimpulso indesiderato di breve durata).
Errori comuni
- Verificare solo l'utilizzo e dimenticare le condizioni di intervallo.
- Dimenticare il termine con il massimo delle durate di priorità più bassa senza nesting.
- Contare con il rapporto sbagliato (deve essere , periodo della -esima sorgente su periodo della -esima).
- Trascurare la latenza intrinseca quando la tabella dà solo .
Versione ripasso
- Nesting: ISR di priorità maggiore interrompe; senza nesting le altre restano pendenti.
- Latenza (priorità , caso peggiore): con nesting ; senza nesting ; priorità 1: .
- Sostenibilità: (1) ; (2) , .
- Massima durata o frequenza: uguaglianza nelle condizioni dove compare, la più restrittiva vince (di solito la priorità più bassa).
- Esempi: : 60%, non sostenibile senza nesting (), sostenibile con nesting; µs, kHz. Set. 2020: 7,47%, latenze 120/185/245 µs.
- Errori: solo l'utilizzo; manca il massimo senza nesting; capovolto; latenza trascurata (Filtri numerici IIR e FIRUn filtro numerico è una equazione alle differenzerelazione che dà il campione di uscita in funzione di campioni di ingresso e di uscita passati $y(k)=\sum_ib_ix(k-i)+\sum_ia_iy(k-i)$. IIR (ricorsivo: qualche $a_i\ne0$) ha risposta impulsiva infinita e bastano pochi termini; FIR (tutti $a_i=0$) è sempre stabile ma richiede molti termini. Il passa-basso IIR del primo ordine $y(k)=b,x(k)+a,y(k-1)$ con $a+b=1$ ha guadagno 1 ed è stabile se $|a|<1$; la risposta al gradino è $y(k)=1-a^{k+1}$. Il filtro analogico equivalente (Eulero) ha $\tau=\dfrac{a,T_c}{1-a}$ e $f_T=\dfrac1{2\pi\tau}$. La media mobile di $N$ campioni è un FIR passa-basso che si assesta in $N$ passi.Filtri numerici IIR e FIR →).
Esercizi su questo argomento
- Esercizio 10 · sostenibilità di tre sorgenti di interruzione con e senza nesting (temi d'esame gennaio, luglio e settembre 2026)
- Esercizio 11 · dall'impegno percentuale della CPU alle durate delle ISR (temi d'esame febbraio 2025 e febbraio 2026)
- Esercizio 12 · latenze, durata massima delle ISR e frequenza massima con tempi di latenza (temi d'esame febbraio 2023, settembre 2020 e 2004)
- Esercizio 16 · filtro IIR del primo ordine, coefficienti, tempo di salita, taglio e risposta al gradino (temi d'esame gennaio 2025, febbraio 2025, settembre 2026 e 2004)
- Esercizio 31 · sistema di controllo di un ascensore con microcontrollore a 8 bit (tema d'esame 18 luglio 2006)