Exponent auf moderner Hardware
-
Hallo,
wieviele Zyklen braucht man heutzutage um exp(x) zu berechnen?
Bye.
-
∞ Zyklen

lg lolo
-
btw. auch ∞ kann kürzer oder länger sein

lg lolo
-
kurz googlen
-
kann man das überhaupt sinnvoll sagen? Heutige CPUs haben ja keine simple Fetch-Decode-Execute-Store-Architektur mehr, wo man für jede Instruktion weiß wie lange sie braucht. Instruktionen werden in der CPU ja umsortiert, parallel ausgeführt etc.
-
rüdiger schrieb:
kann man das überhaupt sinnvoll sagen? Heutige CPUs haben ja keine simple Fetch-Decode-Execute-Store-Architektur mehr, wo man für jede Instruktion weiß wie lange sie braucht. Instruktionen werden in der CPU ja umsortiert, parallel ausgeführt etc.
man kann sicher die grenzfälle angeben:
- viele unabhängige exp() - aufrufe die gepipelined werden (=> Durchsatz)
- kette von exp() - aufruf deren ergebnisse jeweils vom nächsten aufruf gebraucht werden (=> latenz)anscheinend macht sowas ähnliches auch der nette mensch in rapsos link (@rapso: wonach hast du gesucht?), aber ich hatte noch keine zeit das genau anzuschauen.
p.s. wie sieht es mit float-addition aus? die ist heute wirklich nur ein takt, oder?
-
Exponierter schrieb:
p.s. wie sieht es mit float-addition aus? die ist heute wirklich nur ein takt, oder?
Es dauert ungefähr 5 Takte, bis das Ergebnis zur Verfügung steht. Aber wie bereits gesagt wurde, heißt das nicht, dass der Prozessor in der Zeit nichts anderes täte.
Für weitere Fragen zur Ausführungszeit bestimmter Anweisungen, google mal nach "Software Optimization Guide". Das ist von AMD, gilt aber größtenteils auch für andere Prozessorhersteller.
-
rüdiger schrieb:
kann man das überhaupt sinnvoll sagen? Heutige CPUs haben ja keine simple Fetch-Decode-Execute-Store-Architektur mehr, wo man für jede Instruktion weiß wie lange sie braucht. Instruktionen werden in der CPU ja umsortiert, parallel ausgeführt etc.
Man kann das noch sagen, denn am ende interesiert dich garantiert nicht das eine mal in dem du das machst, sondern wieviel die cpu schafft.
Entsprechend so wurde das auch in meinem link getestet und das resultat angegeben.Die Sinnhaftigkeit dieser werte liegt darin zu wissen wie weit du davon weg bist bzw rein theoretisch zu wissen, bevor du etwas anfaengst, was du als resultat erwarten kannst.
cycles pro instruktion ist entsprechend eine "konstante" wie dichten von verschiedenen materialien. die einzelne interesiert dich so erstmal nicht, aber du kannst sie benutzen um rauszufinden wie die werte fuer deine cpu sind.
deswegen wird das weiterhin wohl immer "angebbar" sein, nur die methoden es zu messen werden komplexer.
-
ich denke auch dass man immer throughput und latency unterscheiden sollte.
je nach algorithmus ist eher der eine oder der andere wert ausschlaggebend. wenn beide recht weit auseinander liegen, kann das schon einen deutlichen unterschied machen.