Wikipedia · einfach zusammengefasst · Stand
HLT (Maschinenbefehl)
HLT ist ein Mnemonic der Assemblersprache für x86-Rechnerarchitekturen. Es steht für den Maschinenbefehl Halt (Opcode F4 16), welcher den Hauptprozessor …
Inhalt4 Abschnitte
Bedeutung und Wirkung
HLT ist ein Mnemonic der Assemblersprache für x86-Rechnerarchitekturen. Er steht für den Maschinenbefehl Halt mit dem Opcode F4₁₆. Seine Ausführung versetzt den Hauptprozessor (CPU) in den Halt-Zustand.
In diesem Zustand wird die Programmausführung angehalten, bis eine externe Unterbrechungsanforderung aktiv wird. Eine solche Unterbrechungsanforderung heißt Interrupt Request (IRQ). IRQs sind Signale der Peripherie-Hardware, mit denen sie die CPU über Ereignisse informiert, etwa über Aktivität an Maus oder Tastatur.
Weil die CPU im Halt-Zustand keine Programme ausführt, spart sie Energie und erzeugt weniger Verlustwärme.
Einsatz bei Leerlauf
Fast jeder moderne Prozessor besitzt einen Befehl, mit dem er pausieren kann, wenn keine Aufgaben abzuarbeiten sind. Dieses Pausieren wird in der Regel dem aktiven Warten vorgezogen. Aktives Warten bedeutet hier, dass der Prozessor stattdessen fortlaufend eine Endlosschleife ausführt.
Wenn ein Betriebssystem keine Aufgaben unmittelbar bearbeiten muss, führt es einen Leerlaufprozess aus. Dieser kann seinerseits den Halt-Befehl ausführen. Bei Windows NT übernimmt dies beispielsweise der System Idle Process.
Entwicklung und Besonderheiten
Der Halt-Befehl gehört seit dem Intel 8086 zum Befehlssatz aller x86-Prozessoren. Zunächst war er jedoch nicht zur Senkung des Stromverbrauchs vorgesehen. Dies änderte sich 1994 mit dem Intel DX4.
MS-DOS stellt in den Versionen 6.0, 6.2, 6.21 und 6.22 die Datei POWER.EXE bereit. Sie kann über die CONFIG.SYS geladen werden. Auch ohne BIOS-Funktionen für Advanced Power Management (APM) verwendet sie den Halt-Befehl. In Tests wurde damit eine Stromersparnis von fünf Prozent erreicht.
Einige frühe 100-MHz-Chips der DX-Reihe implementierten den Halt-Befehl fehlerhaft. Beim Start eines Linux-Systems kann deshalb das Argument no-hlt verwendet werden. Dann fordert der Kernel keinen Halt-Zustand an, sondern nutzt als Alternative eine Endlosschleife mit aktivem Warten.
Zugriff durch Betriebssystem und Anwendungen
Der Halt-Befehl kann nur in Ring 0 ausgeführt werden. Ring 0 ist die privilegierte Ausführungsebene des Prozessors; daher dürfen ihn Systemprogramme wie der Kernel verwenden.
Anwendungen außerhalb von Ring 0 sollen einen benötigten Halt-Zustand über eine passende Funktion der Betriebssystem-Programmierschnittstelle (API) anfordern. So kann der Prozess-Scheduler die frei gewordene Rechnerkapazität entweder anderen ausführungsbereiten Prozessen zuweisen oder den Prozessor mit dem Halt-Befehl in einen Stromsparmodus versetzen.