Zum Inhalt springen

Befehlsdecoder

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 8. November 2006 um 22:59 Uhr durch 83.169.172.228 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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 Befehlsdekoder ü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 Verteter dieser Problematik sind die zum x86 Befehlsatz kompatiblen Prozessoren.

Ähnlich einfach ist es bei Prozessoren mit VLIW (Very Large 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.