Opóźnienie przerwania

W informatyce opóźnienie przerwania odnosi się do opóźnienia między rozpoczęciem żądania przerwania (IRQ) a rozpoczęciem odpowiedniej procedury obsługi przerwań (ISR). W przypadku wielu systemów operacyjnych urządzenia są obsługiwane natychmiast po wykonaniu procedury obsługi przerwań urządzenia . Na opóźnienie przerwania może mieć wpływ konstrukcja mikroprocesora , kontrolery przerwań , maskowanie przerwań oraz metody obsługi przerwań systemu operacyjnego (OS).

Tło

Zwykle istnieje kompromis między opóźnieniem przerwania, przepustowością i wykorzystaniem procesora. Wiele technik procesora i systemu operacyjnego , które poprawiają opóźnienia przerwań, zmniejsza przepustowość i zwiększa wykorzystanie procesora. Techniki zwiększające przepustowość mogą zwiększać opóźnienia przerwań i zwiększać wykorzystanie procesora. Wreszcie, próba zmniejszenia wykorzystania procesora może zwiększyć opóźnienia przerwań i zmniejszyć przepustowość.

Minimalne opóźnienie przerwań jest w dużej mierze określane przez obwód kontrolera przerwań i jego konfigurację. Mogą również wpływać na jitter w opóźnieniu przerwania, co może drastycznie wpłynąć na harmonogramowanie systemu w czasie rzeczywistym . Architektura Intel APIC jest dobrze znana z wytwarzania ogromnej ilości jittera opóźnień przerwań. [ potrzebne źródło ]

Maksymalne opóźnienie przerwania jest w dużej mierze określane przez metody używane przez system operacyjny do obsługi przerwań. Na przykład większość procesorów pozwala programom wyłączać przerwania, odkładając wykonywanie procedur obsługi przerwań w celu ochrony krytycznych sekcji kodu. Podczas wykonywania takiej sekcji krytycznej wszystkie procedury obsługi przerwań, które nie mogą bezpiecznie wykonać w obrębie sekcji krytycznej, są blokowane (zapisują one minimalną ilość informacji wymaganych do ponownego uruchomienia procedury obsługi przerwań po wyjściu wszystkich sekcji krytycznych). Tak więc opóźnienie przerwania dla zablokowanego przerwania jest przedłużone do końca sekcji krytycznej, plus wszelkie przerwania o równym i wyższym priorytecie, które nadeszły, gdy blok był na miejscu.

Wiele systemów komputerowych wymaga małych opóźnień przerwań, zwłaszcza systemów wbudowanych , które muszą sterować maszynami w czasie rzeczywistym. Czasami systemy te wykorzystują system operacyjny czasu rzeczywistego (RTOS). RTOS obiecuje, że między wykonaniami podprogramów nie upłynie więcej niż określony maksymalny czas . W tym celu system RTOS musi również gwarantować, że opóźnienie przerwań nigdy nie przekroczy wcześniej określonego maksimum.

Rozważania

Zaawansowane kontrolery przerwań implementują wiele funkcji sprzętowych w celu zminimalizowania narzutu podczas przełączania kontekstu i efektywnego opóźnienia przerwania. Należą do nich funkcje takie jak:

  • Minimalny jitter dzięki nieprzerwanym instrukcjom
  • Zero stanów oczekiwania dla systemu pamięci
  • Przełączane banki rejestrów
  • Łańcuch ogonowy
  • Leniwe układanie
  • Późny przyjazd
  • Wywłaszczanie popu
  • Funkcja uśpienia przy wyjściu

Ponadto istnieje wiele innych metod, których sprzęt może użyć, aby obniżyć wymagania dotyczące krótszego opóźnienia przerwania, aby dane opóźnienie przerwania było tolerowane w danej sytuacji. Należą do nich bufory i kontrola przepływu . Na przykład większość kart sieciowych implementuje bufory pierścieniowe nadawania i odbioru , ograniczanie częstotliwości przerwań i sprzętową kontrolę przepływu. Bufory umożliwiają przechowywanie danych do momentu ich przesłania, a sterowanie przepływem umożliwia karcie sieciowej wstrzymanie komunikacji bez konieczności odrzucania danych, jeśli bufor jest pełny.

Nowoczesny sprzęt realizuje również ograniczenie częstotliwości przerwań. Pomaga to zapobiegać burzom przerwań lub blokadom na żywo, ponieważ sprzęt czeka przez programowalną minimalną ilość czasu między każdym wygenerowanym przerwaniem. Ograniczenie szybkości przerwań zmniejsza ilość czasu poświęcanego na obsługę przerwań, dzięki czemu procesor może poświęcić więcej czasu na wykonywanie użytecznej pracy. Przekroczenie tego czasu skutkuje błędem miękkim (naprawialnym) lub twardym (nienaprawialnym).

Zobacz też