Esercizio 12latenze, durata massima delle ISR e frequenza massima con tempi di latenza (temi d'esame febbraio 2023, settembre 2020 e 2004)
In questa pagina 4
Testo (tema d'esame febbraio 2023 problema P5; 3 settembre 2020 problema 4.4; 28 giugno 2004 problema 9).
(i) Un microcontrollore gestisce 3 sorgenti: convertitore A/D (priorità 1, frequenza 50 kHz, durata da determinare), timer (priorità 2, durata 5 µs, 25 kHz), UART (priorità 3, durata 4 µs, 5 kHz). Il tempo di latenza complessivo di ciascuna ISR è 0,1 µs. Determinare: (a) la durata massima di senza nesting; (b) la massima frequenza di se dura 3 µs (senza nesting); (c) gli stessi risultati con nesting.
(ii) Attività: conversione A/D + PI (125 µs, 300 Hz, TMR0, priorità 1); trasmissione seriale (120 µs, 300 Hz, TMR1, priorità 2); lettura del riferimento (60 µs, 20 Hz, TMR2, priorità 3). Calcolare la percentuale di utilizzo e, senza nesting, la latenza massima di ciascuna interruzione.
(iii) Tre sorgenti: timer (priorità 1, 4 µs, 15 kHz), ADC (priorità 2, 10 µs, 30 kHz), UART (priorità 3, 10 µs, 5 kHz). Latenza intrinseca 1 µs e istruzione più lunga 1 µs, nessun nesting. Determinare: (a) se nessuna richiesta viene persa; (b) la percentuale di tempo in cui il processore serve le ISR; (c) la massima durata della ISR dell'ADC.
(i) Febbraio 2023
Le durate comprensive di latenza sono (incognita), , µs; i periodi sono , , µs.
(a) Senza nesting. Condizioni sulla durata di ISR1:
- IRQ1: ;
- IRQ2: ;
- IRQ3: . La più restrittiva dà , cioè .
(b) Massima frequenza del timer (senza nesting) con µs, : le condizioni su IRQ1 ( ✓) e su IRQ3 sono soddisfatte; per IRQ2: con (per ): . Quindi µs, . (La soluzione ufficiale riporta 83,3 kHz, cioè µs, che si ottiene sommando senza contare la latenza di 0,1 µs di ciascuna ISR; con la stessa convenzione del punto (a) si ha 12,3 µs.)
(c) Con nesting. (a'): IRQ1: ; IRQ2: ; IRQ3: . Quindi (la durata massima cresce di 2 µs rispetto al caso senza nesting: scompare il termine con il massimo). (b'): IRQ2: : con , µs; IRQ3: ✓. .
(ii) 3 settembre 2020
Percentuale di utilizzo: µs al secondo .
Latenze massime senza nesting (si considerano solo le durate indicate): una richiesta può dover attendere la ISR di priorità più bassa in corso (la più lunga), poi tutte quelle di priorità maggiore:
- priorità 1 (TMR0): ;
- priorità 2 (TMR1): (ISR1 e la ISR3 che può essere già in corso);
- priorità 3 (TMR2): (ISR1 e ISR2).
(iii) 28 giugno 2004
Si ha µs. Per le condizioni di intervallo µs; per l'utilizzo µs. (b) Percentuale: . (a) Sostenibilità (senza nesting): IRQ1: ✓; IRQ2: ✓; IRQ3: ✓. Sì, nessuna richiesta viene persa (margine poco più di 3 µs sull'ADC). (c) Massima durata di : IRQ2: , cioè µs; IRQ3: ; IRQ1: ✓. 13 µs circa.
Errori comuni
- Dimenticare la latenza intrinseca quando il testo la dà: sposta il risultato (14,8 invece di 15 µs in (i)).
- Applicare i termini del "senza nesting" nel caso con nesting (la durata massima di ISR1 passa da 14,8 a 16,9 µs).
- Calcolare la latenza della priorità senza la ISR più lunga di priorità inferiore (nel caso senza nesting).
- Confondere "percentuale di utilizzo" (include la latenza) con la percentuale di esecuzione della sola ISR.
Versione ripasso
Testo. Durata massima di e frequenza massima del timer con latenza 0,1 µs (febbraio 2023); utilizzo e latenze (3 settembre 2020); sostenibilità, percentuale e durata massima (2004).
- (i) senza nesting: µs; timer µs = 81,3 kHz (ufficiale 83,3 senza latenza); con nesting: µs e kHz (Sistemi di interruzioni - latenza, nesting e sostenibilitàCon $N$ sorgenti, ciascuna ISR $i$ ha durata $T_{d,i}$ (spesso già comprensiva della latenza intrinseca $T_{LI}$ e dell'istruzione in corso) e periodo minimo $T_{p,i}$. Condizione necessaria: $\sum_iT_{d,i}/T_{p,i}<1$ (la percentuale di impegno della CPU è la somma). Condizione di intervallo per ogni $i$ (priorità 1 = massima): $T_{d,i}+\sum_{k<i}n_k,T_{d,k};[+\max(T_{RC},\max_{j>i}T_{d,j})\text{ senza nesting}]\le T_{p,i}$, con $n_k=\lceil T_{p,i}/T_{p,k}\rceil$. Latenza massima della priorità $n$: con nesting $T_{LI}+\sum_{i<n}T_{ex,i}$; senza nesting si aggiunge $\max_{j>n}T_{ex,j}$.Sistemi di interruzioni - latenza, nesting e sostenibilità →).
- (ii) ; latenze (senza nesting) 120, 185, 245 µs.
- (iii) sostenibile; 46%; µs.
- Errori: latenza dimenticata; termini del senza-nesting nel caso con nesting; ISR più lunga di priorità inferiore; utilizzo/esecuzione confusi (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 →).