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
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.
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
@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
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.
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.
@ 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.
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
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.
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.
@ 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 ...
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.
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
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.