Salta al contenuto
Note per Studenti Esercizio 12 · latenze, durata massima delle ISR e frequenza massima con tempi di latenza (temi d'esame febbraio 2023, settembre 2020 e 2004)

Esercizio 12latenze, durata massima delle ISR e frequenza massima con tempi di latenza (temi d'esame febbraio 2023, settembre 2020 e 2004)

Esame
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 ISRADCISR_{ADC} senza nesting; (b) la massima frequenza di ISRTimerISR_{Timer} se ISRADCISR_{ADC} 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.


Teoria usata: 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à →.

(i) Febbraio 2023

Le durate comprensive di latenza sono Td,1=Tex,1+0,1T_{d,1}=T_{ex,1}+0{,}1 (incognita), Td,2=5,1T_{d,2}=5{,}1, Td,3=4,1T_{d,3}=4{,}1 µs; i periodi sono Tp,1=20T_{p,1}=20, Tp,2=40T_{p,2}=40, Tp,3=200T_{p,3}=200 µs.

(a) Senza nesting. Condizioni sulla durata di ISR1:

  • IRQ1: Td,1+max⁡(5,1; 4,1)≤20⇒Td,1≤14,9T_{d,1}+\max(5{,}1;\,4{,}1)\le20\Rightarrow T_{d,1}\le14{,}9;
  • IRQ2: 5,1+⌈40/20⌉ Td,1+4,1≤40⇒2Td,1≤30,8⇒Td,1≤15,45{,}1+\lceil40/20\rceil\,T_{d,1}+4{,}1\le40\Rightarrow2T_{d,1}\le30{,}8\Rightarrow T_{d,1}\le15{,}4;
  • IRQ3: 4,1+10 Td,1+5⋅5,1≤200⇒Td,1≤17,044{,}1+10\,T_{d,1}+5\cdot5{,}1\le200\Rightarrow T_{d,1}\le17{,}04. La più restrittiva dà Td,1≤14,9T_{d,1}\le14{,}9, cioè Tex,1≤14,8 μsT_{ex,1}\le\mathbf{14{,}8\ \mu s}.

(b) Massima frequenza del timer (senza nesting) con Tex,1=3T_{ex,1}=3 µs, Td,1=3,1T_{d,1}=3{,}1: le condizioni su IRQ1 (3,1+5,1=8,2≤203{,}1+5{,}1=8{,}2\le20 ✓) e su IRQ3 sono soddisfatte; per IRQ2: 5,1+n1⋅3,1+4,1≤Tp,25{,}1+n_1\cdot3{,}1+4{,}1\le T_{p,2} con n1=⌈Tp,2/20⌉=1n_1=\lceil T_{p,2}/20\rceil=1 (per Tp,2≤20T_{p,2}\le20): 12,3≤Tp,212{,}3\le T_{p,2}. Quindi Tp,2=12,3T_{p,2}=12{,}3 µs, fmax=81,3 kHzf_{max}=\mathbf{81{,}3\ kHz}. (La soluzione ufficiale riporta 83,3 kHz, cioè Tp,2=12T_{p,2}=12 µs, che si ottiene sommando 5+3+45+3+4 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: Td,1≤20T_{d,1}\le20; IRQ2: 5,1+2Td,1≤40⇒Td,1≤17,455{,}1+2T_{d,1}\le40\Rightarrow T_{d,1}\le17{,}45; IRQ3: 4,1+10 Td,1+5⋅5,1≤200⇒10 Td,1≤170,4⇒Td,1≤17,044{,}1+10\,T_{d,1}+5\cdot5{,}1\le200\Rightarrow10\,T_{d,1}\le170{,}4\Rightarrow T_{d,1}\le17{,}04. Quindi Tex,1≤16,9 μsT_{ex,1}\le\mathbf{16{,}9\ \mu s} (la durata massima cresce di 2 µs rispetto al caso senza nesting: scompare il termine con il massimo). (b'): IRQ2: 5,1+⌈Tp,2/20⌉⋅3,1≤Tp,25{,}1+\lceil T_{p,2}/20\rceil\cdot3{,}1\le T_{p,2}: con n1=1n_1=1, Tp,2≥8,2T_{p,2}\ge8{,}2 µs; IRQ3: 4,1+10⋅3,1+⌈200/8,2⌉⋅5,1=4,1+31+25⋅5,1=162,6≤2004{,}1+10\cdot3{,}1+\lceil200/8{,}2\rceil\cdot5{,}1=4{,}1+31+25\cdot5{,}1=162{,}6\le200 ✓. fmax=18,2 μs=121,9 kHzf_{max}=\frac1{8{,}2\ \mu s}=\mathbf{121{,}9\ kHz}.

(ii) 3 settembre 2020

Percentuale di utilizzo: 125⋅300+120⋅300+60⋅20=37500+36000+1200=74700125\cdot300+120\cdot300+60\cdot20=37500+36000+1200=74700 µs al secondo =74700106=7,47%=\frac{74700}{10^6}=\mathbf{7{,}47\%}.

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): max⁡(120,60)=120 μs\max(120,60)=\mathbf{120\ \mu s};
  • priorità 2 (TMR1): 125+60=185 μs125+60=\mathbf{185\ \mu s} (ISR1 e la ISR3 che può essere già in corso);
  • priorità 3 (TMR2): 125+120=245 μs125+120=\mathbf{245\ \mu s} (ISR1 e ISR2).

(iii) 28 giugno 2004

Si ha Tp=66,7; 33,3; 200T_p=66{,}7;\ 33{,}3;\ 200 µs. Per le condizioni di intervallo Td=Tex+TLI+TIST=6; 12; 12T_d=T_{ex}+T_{LI}+T_{IST}=6;\ 12;\ 12 µs; per l'utilizzo Tex+TLI=5; 11; 11T_{ex}+T_{LI}=5;\ 11;\ 11 µs. (b) Percentuale: 15 kHz⋅5 μs+30 kHz⋅11 μs+5 kHz⋅11 μs=0,075+0,33+0,055=0,46=46%15\,\text{kHz}\cdot5\ \mu s+30\,\text{kHz}\cdot11\ \mu s+5\,\text{kHz}\cdot11\ \mu s=0{,}075+0{,}33+0{,}055=0{,}46=\mathbf{46\%}. (a) Sostenibilità (senza nesting): IRQ1: 6+max⁡(12,12)=18≤66,76+\max(12,12)=18\le66{,}7 ✓; IRQ2: 12+⌈33,3/66,7⌉⋅6+12=30≤33,312+\lceil33{,}3/66{,}7\rceil\cdot6+12=30\le33{,}3 ✓; IRQ3: 12+3⋅6+6⋅12=102≤20012+3\cdot6+6\cdot12=102\le200 ✓. Sì, nessuna richiesta viene persa (margine poco più di 3 µs sull'ADC). (c) Massima durata di ISRADCISR_{ADC}: IRQ2: Td,2+6+12≤33,33⇒Td,2≤15,33T_{d,2}+6+12\le33{,}33\Rightarrow T_{d,2}\le15{,}33, cioè Tex,2≤13,3T_{ex,2}\le13{,}3 µs; IRQ3: 12+18+6 Td,2≤200⇒Td,2≤28,312+18+6\,T_{d,2}\le200\Rightarrow T_{d,2}\le28{,}3; IRQ1: 6+max⁡(Td,2,12)≤66,76+\max(T_{d,2},12)\le66{,}7 ✓. 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à nn 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 ISRADCISR_{ADC} e frequenza massima del timer con latenza 0,1 µs (febbraio 2023); utilizzo e latenze (3 settembre 2020); sostenibilità, percentuale e durata massima (2004).

Teoria collegata