Dom > Izložba > Sadržaj

Mikrokontroler Latencija prekida

Mar 08, 2019

Nasuprot kompjuterima opšte namene, mikrokontroleri koji se koriste u ugrađenim sistemima često nastoje da optimizuju prekid latencije preko propusnog opsega instrukcija. Problemi obuhvataju i smanjenje latencije, a čineći ga i predvidljivijim (za podršku kontrole u realnom vremenu).


Kada elektronski uređaj prouzrokuje prekid, u kontekstualnom prekidaču moraju se sačuvati srednji rezultati (registri) prije pokretanja softvera odgovornog za rukovanje prekidom. Moraju se vratiti i nakon završetka prekidača. Ako postoji više registara procesora, ovaj proces spremanja i obnavljanja traje više vremena, povećavajući latenciju. Načini smanjenja takvog kašnjenja konteksta / obnavljanja uključuju relativno malo registara u njihovim centralnim procesnim jedinicama (nepoželjno, jer usporava većinu neprekidne obrade u značajnoj mjeri), ili barem ako ih hardver ne sačuva sve (to ne uspije ako softver tada treba za kompenzaciju štednjom "ručno"). Druga tehnika podrazumeva potrošnju silicijumskih kapija na "registre senki": jedan ili više dupliranih registara koji se koriste samo od strane softvera za prekidanje, možda podržavaju namenski stack.


Drugi faktori koji utiču na latenciju prekida uključuju:


Ciklusi potrebni za završetak trenutnih aktivnosti CPU-a. Da bi se ti troškovi sveli na minimum, mikrokontroleri imaju tendenciju da imaju kratke cjevovode (često tri instrukcije ili manje), male pufere za pisanje, i osiguravaju da su dulje instrukcije kontinuirane ili restartabilne. Principi dizajna RISC-a osiguravaju da većina instrukcija uzima isti broj ciklusa, čime se izbjegava potreba za većinom takve logike nastavka / ponovnog pokretanja.

Dužina bilo koje kritične sekcije koju treba prekinuti. Ulaz u kritičnu sekciju ograničava pristup istovremene strukture podataka. Kada strukturi podataka mora pristupiti rukovatelj prekidom, kritična sekcija mora blokirati taj prekid. Prema tome, latencija prekida se povećava koliko god se prekid blokira. Kada postoje teška vanjska ograničenja za kašnjenje sistema, programeri često trebaju alate za mjerenje latencija prekida i praćenje koje kritične sekcije uzrokuju usporavanje.

Jedna uobičajena tehnika samo blokira sve prekide za vrijeme trajanja kritične sekcije. Ovo je lako implementirati, ali ponekad kritične sekcije postaju neugodno dugačke.

Složenija tehnika samo blokira prekide koji mogu pokrenuti pristup toj strukturi podataka. Ovo se često zasniva na prekidnim prioritetima, koji imaju tendenciju da se ne poklapaju dobro sa relevantnim sistemskim strukturama podataka. Shodno tome, ova tehnika se uglavnom koristi u veoma ograničenim okruženjima.

Procesori mogu imati hardversku podršku za neke kritične sekcije. Primjeri uključuju podršku atomskom pristupu bitovima ili bajtovima unutar riječi ili drugim atomskim pristupnim primitivima kao što su LDREX / STREX ekskluzivni pristupni primitivi uvedeni u ARMv6 arhitekturi.

Prekidanje gniježđenja. Neki mikrokontroleri omogućavaju prekidanje višeg prioriteta za prekidanje onih nižeg prioriteta. Ovo omogućava softveru da upravlja latencijom tako što daje vremenski kritične prekide višeg prioriteta (a time i niže i predvidljivije latencije) od onih manje kritičnih.

Brzina okidanja. Kada dođe do prekida, mikrokontroleri mogu izbjeći dodatni kontekstni ciklus spremanja / vraćanja pomoću oblika optimizacije poziva.

Niži krajnji mikrokontroleri imaju tendenciju da podržavaju manje kontrole prekida kašnjenja nego one sa višim krajem.