WikiDer > Segmentdeskriptor

Segmentdescriptor

EIN Segmentdeskriptor ist ein Cache-Register, oder besser gesagt deren Inhalt, in der Mikroprozessoren der Serie i86, aus der 80286.

Geschichte

Der Prototyp der Reihe von Mikroprozessoren ist der 8086Es hat 20 Adressleitungen und kann damit 1 MiB Speicher adressieren, die Register sind jedoch nur 16 Bit groß.

Um so viel Speicher adressieren zu können, muss der 8086 Segmentregister, ebenfalls aus 16 Bit. Bei jeder Adressierung des Speichers wird ein Segmentregister verwendet, dessen Inhalt um vier Nullbits ergänzt wird.

80286

Das 80286 hat 24 Adresszeilen und die 80386 sogar 32. Tatsächlich benötigen diese Mikroprozessoren größere Segmentregister, aber das würde Probleme mit bestehender Software verursachen.

Bei der Lösung dieses Problems wurde erkannt, dass ein Segmentregister zwar 65.536 verschiedene Werte enthalten kann, jedoch nie so viele Segmente verwendet werden.

In dem Sicherheitsmodus des 80286 und späteren Prozessoren enthält das Segmentregister daher nicht die Adresse des Segments, sondern einen Index zu einer Tabelle, die die Adressen enthält. Neben den Adressen enthält die Tabelle auch Informationen über die Größe der Segmente und das Wertpapier, dies sind die Segmentdeskriptoren.

Immer wenn ein Segmentregister geladen wird, wird die Tabelle konsultiert und der Deskriptor in ein Cache-Register geladen.

Das Laden eines Segmentregisters ist daher ein ziemlich langsamer Vorgang, der in Sicherheitsmodus dauert viel länger als in echte Mode.

Die Cache-Register sind nicht per Software zugänglich und können nicht von einem Programm überprüft werden.Sie werden vom Prozessor konsultiert, wenn der Speicher angesprochen wird.

Für die Segmentregister gilt das Gegenteil: Sie sind für die Software zugänglich und werden vom Prozessor nicht konsultiert.

echte Mode

Funktioniert der Prozessor? echte Mode, dann wird die Tabelle nicht konsultiert. Außerdem wird jedes Mal, wenn ein Segmentregister geladen wird, der neue Wert mit 16 multipliziert und in das zugehörige Cache-Register gestellt.

Dies ist der Hauptunterschied zwischen Real-Modus und Protected-Modus.

Bei der Adressierung des Speichers wird wie im Protected Mode nur das Cache-Register konsultiert.