Joachim Durchholz schrieb am 16. April 2008 13:20
> Das eigentliche Problem ist nicht die x86-Kompatibilität, sondern das
> abstruse Registermodell des x86: lauter Spezialregister, etliche
> davon gibt es sogar nur einmal.
Seit dem 80386 weitgehend Vergangenheit. Also seit mehr als 20
Jahren. Benenne EAX .. ESP in R0..R7 um und plötzlich ist der
Befehlssatz auch optisch orthogonaler. Ach so, seit -x86 halt
R0..R15.
ADD R1,[R0] // no problem, just looks nicer than ADD EBX,[EAX]
> Das bedeutet, dass dem Compiler die Register rasch ausgehen, und er
> muss die Daten ins RAM verschieben.
> Das ist höchst ineffizient, und die Compiler verbringen einen
> Großteil ihrer Zeit damit, die Codereihenfolge umzuordnen, damit die
> Register möglichst lange reichen, und müssen dann doch wieder ins
>Â RAM.
Ist das so? Was macht dann eine Technik namens Register Renaming in
allen x86 seit dem P6?
> Eine vernünftige Registerarchitektur hat einen Sack austauschbarer
> Universalregister und drei oder vier Spezialregister (Statusregister,
> Program Counter, Stack Pointer, eventuell noch einen Frame Pointer).
> Bei amd64 haben sie ein paar zusätzliche Universalregister spendiert,
> aber wozu noch die Spezialregister?
So der Stand der Dinge 1982 mit dem NS160312 - elegance is
everything.
mch
> Das eigentliche Problem ist nicht die x86-Kompatibilität, sondern das
> abstruse Registermodell des x86: lauter Spezialregister, etliche
> davon gibt es sogar nur einmal.
Seit dem 80386 weitgehend Vergangenheit. Also seit mehr als 20
Jahren. Benenne EAX .. ESP in R0..R7 um und plötzlich ist der
Befehlssatz auch optisch orthogonaler. Ach so, seit -x86 halt
R0..R15.
ADD R1,[R0] // no problem, just looks nicer than ADD EBX,[EAX]
> Das bedeutet, dass dem Compiler die Register rasch ausgehen, und er
> muss die Daten ins RAM verschieben.
> Das ist höchst ineffizient, und die Compiler verbringen einen
> Großteil ihrer Zeit damit, die Codereihenfolge umzuordnen, damit die
> Register möglichst lange reichen, und müssen dann doch wieder ins
>Â RAM.
Ist das so? Was macht dann eine Technik namens Register Renaming in
allen x86 seit dem P6?
> Eine vernünftige Registerarchitektur hat einen Sack austauschbarer
> Universalregister und drei oder vier Spezialregister (Statusregister,
> Program Counter, Stack Pointer, eventuell noch einen Frame Pointer).
> Bei amd64 haben sie ein paar zusätzliche Universalregister spendiert,
> aber wozu noch die Spezialregister?
So der Stand der Dinge 1982 mit dem NS160312 - elegance is
everything.
mch