Post by Hermann RiemannPost by Holm TiffePost by Hermann RiemannHermann
der sich noch daran erinnert das Prozessoeren
wie Motorola 68000 ( nicht aber Z800?)
die opcodes in micro codes umsetzten.
Das ist auch heute nicht unüblich. Microcode programmierte CPUs sind
einer von 2 Wegen das Problem zu lösen.
Ab 8086 geschah das mit pipeline,
So das mit einem Takt mehrere Stellen in der pipeline
erledigt werden können.
Ich denke da greifst du ein paar Chip-Generationen zu tief.
Nach meiner Erinnerung war der 80286 mit einem 6 Byte fassenden
Prefetch-buffer ausgestattet. Damit konnte er aber nur die nächsten
Befehlsbytes aus dem RAM nach laden, aber nicht gleichzeitig ausführen.
Das Befehlspipelining IN der CPU kam m.E. nach erst mit den Pentium
genannten 80586 und späteren. Bis dahin waren das alles In-Order
Architekturen ohne Spekulation, Befehls-sortierung und -Pipeline. Zudem
war der 486 IMHO der erste der (RISC-Idee) die meisten Befehle in einem
Takt schaffte. Alle vorigen brauchten Teils sehr viele Takte pro Befehl.
Was u.a. den Taskwechsel bremste weil das umladen der Register hunderte
CPU-Takte brauchte und die entsprechenden RAM-Zugriffe auf TSS,GDT,LDT
Irgendwo las ich auch mal das ein kompletter 386-Befehl bis zu 16
Bytes(?) lang sein könnte. Da gab es so sachen wie Prefix, variable
OpCode-Länge, Suffixe, displacement, Offsets und die operanden. Was dann
alles zusammen gezählt wurde und sicher mit verantwortlich war für die
Schaffung von L1-Cache, L2-cache, Lxx-cache... :)
Blöderweise werden die CPUs immer Schneller Schneller, das RAM eher
seltener.
Post by Hermann RiemannBei dem abenteuerlich vermurksten intel Befehlssatz
gibt es so vermutlich etwas wie ein mikrocompiler,
der intel code in alpha processor code übersetzt.
Wo soll dieser mikrocompiler sitzen, in der CPU?
Meinst du Itaniums die u.a. intelcode (langsam) Emulieren?
Alles andere liegt doch ein paar Software-schichten höher und nennt sich
crosscompilation.
Post by Hermann RiemannIch vermute, das man den 386 code nicht so effizient
hinbekommt wie den arm code,
so dass am Ende des Mooreschen Gesetztes
der Dinosaurier intel code aussterben kann.
Bei all den Klimmzügen die man schon machte (A20 u.a.) würde mich das
ehrlich wundern wenn das ausstürbe. Das Moorsche Gesetz ist doch selbst
schon ein Dinosaurier.
Ich erinnere mich dunkel an die Mär eines Orthogonalen Befehlssatzes,
der ab dem 386 gelten sollte. Oder... verwechsele ich das jetzt mit dem
6502? :-/
Post by Hermann RiemannPost by Holm TiffeSo viel ich weiß sind moderne x86 und amd64 CPUs auch nur von RISC
Maschinen emulierte x86 oder amd64 "personalities".
Was da real passiert dürfte Geschäftsgeheimnis bleiben.
Ist es nicht prinzipiell richtig so? Da stecken halt mehrere RISC-Kerne
drin. Die ankommenden Befehle werden; gesteuert durch den Microcode; in
MicroOps zerlegt und diesen Zugeführt. Leider müssen die dann mit den
Widrigkeiten des Befehlssatzes und der Architektur klar kommen. Was
bedeutet: Sprungvorhersage und Verwerfen der Arbeit und des Caches bei
Falschem raten, Befehls- und
Operanden(Ergebniss)-Sortierung/-Rekombinierung zum ausschreiben ins RAM
oder dem abhängigen nächsten Befehl, und das bei Beachten von
Segment-addressen, Paging u.s.w.
Kay