next up previous contents
Next: Einbau in den Controller Up: Implementierung Previous: Fetcheinheit   Inhalt


Prioritäten-Manager

Zunächst werden eventuelle Latenzen vom vorherigen Takt übernommen. Der Scheduler führt für jeden Thread die Anzahl der noch ausstehenden Latenzen mit.

Das Herzstück eines jeden Schedulers ist ein Vergleicherbaum, der den jeweils höchstpriorisierten Thread zurückliefert. Dieser Vergleicherbaum stellt den größten Aufwand in Laufzeit und Hardware-Verbrauch dar.

Verglichen werden von jedem Thread ein Wert, der zum einen aus den Parametern - etwa der Deadline - besteht, zum anderen gibt das höchstwertige Bit an, ob der Thread überhaupt ausgeführt werden darf. Somit werden ausführbare Threads schon bei diesem Vergleich bevorzugt.

Ein Thread darf nur dann ausgeführt werden, wenn er sich nicht in einer Latenz befindet, aktiv und nicht blockiert ist und wenn ein Bytecode oder Opcode zur Verfügung steht. Dies ist der Fall, wenn im Befehlsfenster noch genügend Daten vorhanden sind oder statt neu geholter Bytecodes noch Mikrobefehle ausgeführt werden können.

Ist der höchstpriorisierte Thread bestimmt, wird dieser über IdThreadTag an die Dekodierlogik weitergereicht oder IdInvalid auf high gesetzt, wenn er nicht ausgeführt werden darf. Zum Schluß werden noch die Latenzen heruntergezählt, da alle nicht ausgeführten Threads im Verlauf dieses Taktes einen Takt ihrer Latenz ,,abgesessen`` haben.

Die übrigen Teile sind jeweils vom verwendeten Schedulingverfahren abhängig.


Tabelle: Kodierung der Klassen für Guaranteed Percentage
Code Klasse
000 Nicht echtzeitfähig
001 Minimal
101 Maximal
110 Genau
111 Kurze Deadline


next up previous contents
Next: Einbau in den Controller Up: Implementierung Previous: Fetcheinheit   Inhalt
Alexander Schulz
2000-06-18