FPU Befehle mit CPU Befehlen mischen
-
Hallo,
da die FPU parallel neben der CPU arbeitet, könnte man theoretisch die FPU Befehle mit "normalen" CPU Befehlen mischen.
Also z.B. stattfadd fmul fadd mov eax, ebx mov ebx, ecx
so was:
fadd mov eax, ebx fmul mov ebx, ecx fadd
Was ist so gängige Praxis? Ist die Lesbarkeit des Programms hier wichtiger als die Ausführungsgeschwindigkeit? Oder macht man gewöhnlich so was nicht...
-
wo das geht, sollte man es tun. die lesbarkeit muss dabei gar nicht besonders leiden - durch geeignete formatierung kann man die pfade optisch gut voneinander trennen (etwa indem man in unterschiedliche spalten schreibt). das hauptproblem dabei ist schlicht, das es selten über lange strecken durchführbar ist:
- es treten übergänge FPU/SSE -> integer auf, z.b. wegen irgendwelchen verzweigungen
- die aufwand eines pfades überwiegt den des anderen erheblich (zumindest kriegt man dann aber den kürzeren zweig quasi gratis)
- häufig bremsen sich die beiden pfade wegen zu geringer speicherbandbreite gegenseitig aus - und speicherzugriffe sind nunmal im allgemeinen nicht vektorisierbar; man braucht also nach möglichkeit aufgaben, die durch die rechengeschwindigkeit begrenzt werdenwenn es allerdings machbar ist, kann der geschwindigkeitszuwachs enorm sein.