Auch das Rechnen dauert lange.
Eine Floatzahl wird bei jedem rechnen erstmal ausgepackt.
Dann wird gerechnet, am Ende wird gerundet und wieder eingepackt.
Bei einer Addition wird vorm Rechnen noch die Mantisse angefasst und auf 128Bit aufgeblasen!
Sonst wäre jede Addition ein Würfelspiel.
Einpacken und auspacken ist quasi ein:
nero hat geschrieben: ↑Di 3. Nov 2020, 11:01
Was sehr lange dauert ist die Umwandlung integer - float [..]
Das Dauert, vor allem auf nem 8Bitter.
Daher hat der AVR GCC erst garkein double.
Auf einem ARM ist softfloat etwas schneller, aber auch lahm.
Zum Glück haben Cortex-M4 Aufwärts ne FPU
Es ist natürlich imemr vom Anwendungsfall abhängig obs sich lohnt, wer viel rechnet sollte was mit FPU nehmen.
Für meine E-Last war ein AVR schon zu lahm, der konnte keine 100Hz nach einem Gleichrichter mehr mit konstant 1A belasten.
nero hat geschrieben: ↑Di 3. Nov 2020, 11:01
Das Gleitkommarechenwerk hat aber eine Pipline. dh das Ergebnis der Gesamt Rechnung kommt 7 (glaub ich aus Stegreif) Takte verspätet.
Japp, das weis der Compiler aber und versucht da andere Befehle reinzustreuen.
Ein zu früher Zugriff in Eigenbau ASM stallt dann einfach die CPU selbst bis die FPU fertig hat.