Latenz unterbrechen - Interrupt latency

Bei der Berechnung ist die Interrupt-Latenz die Zeit, die von der Generierung eines Interrupts bis zur Wartung der Interrupt-Quelle vergeht . Bei vielen Betriebssystemen werden Geräte gewartet, sobald der Interrupt-Handler des Geräts ausgeführt wird. Die Interrupt-Latenz kann durch das Mikroprozessor- Design, Interrupt-Controller , die Interrupt-Maskierung und die Interrupt-Behandlungsmethoden des Betriebssystems (OS) beeinflusst werden.

Hintergrund

Es gibt normalerweise einen Kompromiss zwischen Interrupt-Latenz, Durchsatz und Prozessorauslastung. Viele der Techniken des CPU- und Betriebssystemdesigns , die die Interrupt-Latenz verbessern, verringern den Durchsatz und erhöhen die Prozessorauslastung. Techniken, die den Durchsatz erhöhen, können die Interrupt-Latenz erhöhen und die Prozessorauslastung erhöhen. Schließlich kann der Versuch, die Prozessorauslastung zu reduzieren, die Interrupt-Latenz erhöhen und den Durchsatz verringern.

Die minimale Interrupt-Latenz wird weitgehend von der Interrupt-Controller- Schaltung und ihrer Konfiguration bestimmt. Sie können auch den Jitter in der Interrupt-Latenz beeinflussen, was die Echtzeit- Planbarkeit des Systems drastisch beeinflussen kann. Die Intel APIC-Architektur ist bekannt dafür, dass sie eine große Menge an Interrupt-Latenz-Jitter erzeugt.

Die maximale Interrupt-Latenz wird weitgehend von den Methoden bestimmt, die ein Betriebssystem für die Interrupt-Behandlung verwendet. Beispielsweise erlauben die meisten Prozessoren Programmen, Interrupts zu deaktivieren und die Ausführung von Interrupt-Handlern zu verschieben, um kritische Codeabschnitte zu schützen . Während der Ausführung eines solchen kritischen Abschnitts werden alle Interrupt-Handler blockiert, die innerhalb eines kritischen Abschnitts nicht sicher ausgeführt werden können (sie speichern die Mindestmenge an Informationen, die zum Neustart des Interrupt-Handlers erforderlich sind, nachdem alle kritischen Abschnitte beendet wurden). Daher wird die Interrupt-Latenz für einen blockierten Interrupt bis zum Ende des kritischen Abschnitts verlängert, zuzüglich aller Interrupts mit gleicher und höherer Priorität, die eingetroffen sind, während der Block vorhanden war.

Viele Computersysteme erfordern geringe Interrupt-Latenzen, insbesondere eingebettete Systeme , die Maschinen in Echtzeit steuern müssen . Manchmal verwenden diese Systeme ein Echtzeitbetriebssystem (RTOS). Ein RTOS verspricht, dass zwischen den Ausführungen von Unterprogrammen nicht mehr als eine bestimmte maximale Zeit vergeht . Dazu muss das RTOS auch sicherstellen, dass die Interrupt-Latenz niemals ein vordefiniertes Maximum überschreitet.

Überlegungen

Erweiterte Interrupt-Controller implementieren eine Vielzahl von Hardwarefunktionen, um den Overhead während Kontextwechseln und die effektive Interrupt-Latenz zu minimieren . Dazu gehören Funktionen wie:

  • Minimaler Jitter durch unterbrechungsfreie Anweisungen
  • Null Wartezustände für das Speichersystem
  • Umschaltbare Registerbänke
  • Schwanzverkettung
  • Faules Stapeln
  • Späte Ankunft
  • Pop Preemption
  • Sleep-on-Exit-Funktion

Es gibt auch viele andere Methoden, mit denen Hardware dazu beitragen kann, die Anforderungen an eine kürzere Interrupt-Latenz zu senken, um eine bestimmte Interrupt-Latenz in einer Situation tolerierbar zu machen. Dazu gehören Puffer und Flusskontrolle . Zum Beispiel implementieren die meisten Netzwerkkarten Sende- und Empfangsringpuffer , Interrupt - Rate Limiting und Hardware - Flusskontrolle. Mit Puffern können Daten gespeichert werden, bis sie übertragen werden können, und mit der Flusskontrolle kann die Netzwerkkarte die Kommunikation unterbrechen, ohne Daten verwerfen zu müssen, wenn der Puffer voll ist.

Moderne Hardware implementiert auch eine Begrenzung der Interruptrate. Dies hilft, Interrupt-Stürme oder Live-Sperren zu vermeiden, indem die Hardware zwischen jedem von ihr erzeugten Interrupt eine programmierbare Mindestzeit warten muss. Die Begrenzung der Interrupt-Rate reduziert den Zeitaufwand für die Wartung von Interrupts, sodass der Prozessor mehr Zeit für nützliche Arbeiten aufwenden kann. Das Überschreiten dieser Zeit führt zu einem weichen (wiederherstellbaren) oder harten (nicht wiederherstellbaren) Fehler.

Siehe auch

Verweise