Befehlsdecoder

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Der Befehlsdecoder ist ein Teil des Prozessors im Computer, ein sogenannter Interpreter.

Seine Aufgabe besteht darin, die Maschinenbefehle in Micro-Instructions zu übersetzen und, falls nötig, in einzelne Arbeitsschritte zu zerlegen. Diese werden dann von ihm an die zugehörigen Einheiten der Central Processing Unit weitergeleitet.

In einem typischen Mikroprozessor mit einer Pipeline werden die Befehle von der Instruction Fetch Unit (IFU) aus dem Speicher geholt und dann dem Befehlsdecoder übergeben. Anhand des gespeicherten Wertes kann dieser dann den nächsten Befehl entschlüsseln. Vermenschlicht entspricht dies dem Nachschlagen in einer Tabelle. Neben der Dekodierung des Befehls (z. B. Addition oder Sprung) müssen auch die Operanden dekodiert werden. Im Falle einer Addition beispielsweise welche Werte addiert werden sollen.

Wie schwierig dieser Vorgang ist, hängt von der jeweiligen Architektur des Prozessors ab. Im günstigen Fall handelt es sich um einen RISC (Reduced Instruction Set Computer) Prozessor, bei dem jeder Befehl mit der gleichen Anzahl von Bits gespeichert wird. Auch müssen bei der Dekodierung des Befehls nicht neue Mikro-Befehle generiert werden, falls der gespeicherte Befehl es zum Beispiel erfordert einen Operanden aus dem Speicher zu laden. Dies kann bei CISC (Complex Instruction Set Computer) Architekturen passieren. Erschwerend kommt bei dieser Architektur hinzu, dass die Befehle häufig unterschiedlich lang sind, also unterschiedlich viele Bits zum Speichern brauchen. Die berühmtesten Vertreter dieser Problematik sind die zum x86 Befehlssatz kompatiblen Prozessoren.

Ähnlich einfach ist es bei Prozessoren mit VLIW (Very Long Instruction Word) Architektur. Befehle dieser Architektur sind relativ einfach zu dekodieren, enthalten aber neben der gewünschten Operation und den Operanden auch Informationen über die zu verwendenden Ausführungseinheiten.

Die dekodierten Befehle werden an die nachfolgenden Ausführungseinheiten weitergeleitet. Danach kann der nächste Befehl dekodiert werden.