Joachim Durchholz schrieb am 16. April 2008 13:29
> Das Blöde ist nur, dass die Compiler den Code fürs Frontend
> übersetzen müssen. Und da sind sie aufgrund der Registerknappheit
> dann viel zu früh gezwungen, die Daten ins RAM zu verschieben. Oder
> zwischen Registern hin- und herzuschieben.
>Â
> Die CPU kann das alles zwar optimieren, aber wozu? Das kostet doch
> bloß Chipfläche und Taktzyklen (bzw. Queue-Latenzen).
ich finde, die gründe liegen auf der hand. der x86-befehlssatz lässt
keinen ausreichend effizienten code zu, so dass eine nachträgliche,
zumindest grundlegende optimierung der µops unverzichtbar ist.
außerdem weiß der hersteller einer cpu immer am besten, in welcher
reihenfolge die befehle für einen spezifischen prozessor kommen
sollten, damit das meiste aus ihm rausgeholt werden kann. schließlich
ist man ohne detaillierte pläne der prozessorinterna auch auf
empirische methoden angewiesen um compiler möglichst effizienten code
erzeugen zu lassen. die gewonnene erfahrung ist dann im schlimmsten
fall für die nächste prozessorrevision nicht mehr gültig.
> Das Blöde ist nur, dass die Compiler den Code fürs Frontend
> übersetzen müssen. Und da sind sie aufgrund der Registerknappheit
> dann viel zu früh gezwungen, die Daten ins RAM zu verschieben. Oder
> zwischen Registern hin- und herzuschieben.
>Â
> Die CPU kann das alles zwar optimieren, aber wozu? Das kostet doch
> bloß Chipfläche und Taktzyklen (bzw. Queue-Latenzen).
ich finde, die gründe liegen auf der hand. der x86-befehlssatz lässt
keinen ausreichend effizienten code zu, so dass eine nachträgliche,
zumindest grundlegende optimierung der µops unverzichtbar ist.
außerdem weiß der hersteller einer cpu immer am besten, in welcher
reihenfolge die befehle für einen spezifischen prozessor kommen
sollten, damit das meiste aus ihm rausgeholt werden kann. schließlich
ist man ohne detaillierte pläne der prozessorinterna auch auf
empirische methoden angewiesen um compiler möglichst effizienten code
erzeugen zu lassen. die gewonnene erfahrung ist dann im schlimmsten
fall für die nächste prozessorrevision nicht mehr gültig.