Forum: Mikrocontroller und Digitale Elektronik Maschinenbefehle


von Klausi (Gast)


Lesenswert?

Hallo an alle,

ich brauche den Rat eines Experten ;), ich rätsele gerade darüber, wo 
genau in einem Mikroprozessor die Machinenbefehle gespeichert sind. Ich 
dachte an einen Teil des Flash-Speichers, der als Festwertspeicher 
umfunktioniert wurde, nicht von Normalsterblichen ausgelesen werden kann 
und die Instruktionen beinhaltet.
Oder existiert da ein kleiner Mikroprogrammspeicher nur für die 
Maschinenbefehle?
Und, kann mir jemand von euch sagen, was dort dann tatsächlich 
gespeichert ist?
Danke schon mal,

Klausi

von (prx) A. K. (prx)


Lesenswert?

Nicht jeder Mikroprozessor ist mikroprogrammiert. AVRs und ARMs 
beispielsweise besitzen kein Mikroprogramm, also auch keinen Speicher 
dafür.

x86-Prozessoren verwenden sind nur komplexe wenig häufige Befehle 
mikroprogrammiert. Der Speicher dafür ist internes nicht 
programmierbares ROM und etwas RAM für nachträgliche Patches.

von Klausi (Gast)


Lesenswert?

Danke für die schnelle Antwort!

von Cyblord -. (cyblord)


Lesenswert?

Klausi schrieb:
> Hallo an alle,
>
> ich brauche den Rat eines Experten ;), ich rätsele gerade darüber, wo
> genau in einem Mikroprozessor die Machinenbefehle gespeichert sind.

Nirgends. Warum sollten die irgendwo gespeichert sein?
Es gibt in der Tat Mikroprogramme in manchen CPUs. Als ROM ausgeführt. 
Oft aber auch nicht.

Also wenn du genauers zu Mikroprogrammen wissen willst solltest du 
danach fragen und nicht derart obskure Fragestellungen hernehmen.

Mikroprogramme sind in der Regel einfache Funktionen. Vorne kommt ein 
Befehl rein, hinten werden Steuerleitungen für die Rechenwerke und 
Register in einer CPU gesetzt.

gruß cyblord

von Klausi (Gast)


Lesenswert?

@cyblord
Sry wenn mein Wissen noch erweitert werden muss.

Ich dachte mir, irgendwo müsste doch gespeichert stehen, wie genau er 
jetzt z.B eine Subtraktion durchführt

Klausi

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Klausi schrieb:
> Ich dachte mir, irgendwo müsste doch gespeichert stehen, wie genau er
> jetzt z.B eine Subtraktion durchführt

Die elementaren Rechenoperationen sind bei (fast?) allen Prozessoren 
fest verdrahtet. Die Operanden-Ladevorgänge usw. sind jedoch bei manchen 
Prozessoren mikroprogrammiert, ebenso auch komplexere arithmetische 
Operationen (z.B. Division).

Wie schon erwähnt, sind die aktuellen x86-Prozessoren großenteils 
festverdrahtet, haben aber auch kleine Mikrocode-Bereiche.

Bei den - mittlerweile eher antiken - Großrechnern der Baureihe 
Siemens-Fujitsu H90 konnte man den kompletten Befehlssatz durch Laden 
des Microcodes austauschen, so dass diese Rechner nicht nur ihren 
eigenen Befehlssatz beherrschten, sondern auch auf den einer IBM S/390 
umgestellt werden konnten.

von (prx) A. K. (prx)


Lesenswert?

Andreas Schweigstill schrieb:
> Die elementaren Rechenoperationen sind bei (fast?) allen Prozessoren
> fest verdrahtet.

Wenn ich mir die Renesas R8C/M16C/M32C Reihe ansehe würde ich da nicht 
blind drauf wetten. Deren Befehlssatz schreit förmlich nach 
Mikroprogrammierung auch von Standardoperationen.

von Jens G. (jensig)


Lesenswert?

@ A. K. (prx)

>x86-Prozessoren verwenden sind nur komplexe wenig häufige Befehle
>mikroprogrammiert. Der Speicher dafür ist internes nicht
>programmierbares ROM und etwas RAM für nachträgliche Patches.

Wirklich RAM? ODer vielleicht doch sowas wie EEPROM/Flash? Sonst würden 
die Patches ja jedesmal flöten gehen beim Abschalten.

von Peter II (Gast)


Lesenswert?

Jens G. schrieb:
> Wirklich RAM? ODer vielleicht doch sowas wie EEPROM/Flash? Sonst würden
> die Patches ja jedesmal flöten gehen beim Abschalten.

ja wirklich ram, das bios schreibt sie jedes mal rein, auch das BS kann 
sie reinschreiben - macht z.b. der Intel treiber

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Peter II schrieb:
> Jens G. schrieb:
>> Wirklich RAM? ODer vielleicht doch sowas wie EEPROM/Flash? Sonst würden
>> die Patches ja jedesmal flöten gehen beim Abschalten.
>
> ja wirklich ram, das bios schreibt sie jedes mal rein, auch das BS kann
> sie reinschreiben - macht z.b. der Intel treiber

Nachteil ist leider, daß die gepatchten Befehle langsamer werden.
Es wird nicht der Microcode geändert.
Eine Art Link wird im RAM abgelegt der eine Umschreibung des Befehles 
mit anderen Befehlen emuliert.

von Jens G. (jensig)


Lesenswert?

aha - dann kommt so ein Microcode-Patch also eher als BIOS- oder 
Treiberupdate rein.
Und ich dachte immer, daß dabei immer direkt die CPU geflasht wird.
Naja - hatte schon seit grauer Vorzeit kein BIOS mehr geupdated.
Ist aber vielleicht besser so - da kann die CPU nicht wegen kaputtem 
Flash kaputtgehen ;-)
Und Flash/EEPROM würden wohl mit den internen Zykluszeiten nicht so 
richtig klarkommen.

von Jens G. (jensig)


Lesenswert?

@ Dennis Heynlein
>Eine Art Link wird im RAM abgelegt der eine Umschreibung des Befehles
>mit anderen Befehlen emuliert.

Das ist aber jetzt wirklich ganz schön billig ...

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Jens G. schrieb:
> @ Dennis Heynlein
>>Eine Art Link wird im RAM abgelegt der eine Umschreibung des Befehles
>>mit anderen Befehlen emuliert.
>
> Das ist aber jetzt wirklich ganz schön billig ...

Dann halt, ein RAM-basierendes Remapping eines/mehrerer Opcodes auf ein 
Emulationsprogramm im RAM.

Hat ja keiner Angenommen, daß es für die Chiphersteller teuer wird.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Oder haben heutige CPU's wieder ein Microcode-Programm in einem ROM ?

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

die ganze Mikrocodediskussion führt völlig in die Irre. Das ist ja 
wiederum nur ein Programm und könnte gottweisswo stehen, aber letzten 
Endes muss ja alles mal ausgeführt werden, und dafür gibt es eben 
Ausführungseinheiten - z.B. Addierer. Die wichtigsten davon sind eben 
das, was man im eigentlichen Sinn als CPU bezeichnet, eben "Processing 
Unit". Das ist wie in einer Firma: man kann zwar Aufgaben weitergeben an 
Untergebene, aber irgendjemand muss dann mal die Arbeit machen, sonst 
passiert nämlich garnichts. Genausowenig passiert, wenn nur ein Befehl 
per Microcode in andere Befehle umgesetzt wird, erst wenn diese 
ausgeführt werden geht es weiter.

Gruss Reinhard

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.