Wieviel Takte für ADD bzw. MUL (32-Bit) ?



  • Hallo zusammen,

    ich kenne mich nicht außerordentlich in Assembler aus, brauche aber für einen Performance-Vergleich zweier Algorithmen (unter C++) die Taktanzahl für ein ADD bzw. MUL (unter 32-Bit, wenn möglich auf Intel-Prozessoren). Es handelt sich dabei um vorzeichenbehaftete 32-Bit Zahlen (float).

    Finde im Web nur Angaben zu Risc oder Arm-Prozessoren...

    mfg Winn



  • Das sollte in den Manuals von Intel theoretisch drinnenstehen. Soweit ich mich erinnern kann, kann ein MUL alle 2 Takte ausgeführt werden und etliche ADDs (2 oder mehr) in einem Takt. Nachdem das Ganze aber eine schöne Pipeline ist, kann man es wohl oft so einrichten, dass das ADD gratis ist, wenn man MUL und ADD macht.



  • Ringding schrieb:

    Das sollte in den Manuals von Intel theoretisch drinnenstehen.

    Welche Manuals von Intel meinst Du ?

    Ringding schrieb:

    Soweit ich mich erinnern kann, kann ein MUL alle 2 Takte ausgeführt werden und etliche ADDs (2 oder mehr) in einem Takt. Nachdem das Ganze aber eine schöne Pipeline ist, kann man es wohl oft so einrichten, dass das ADD gratis ist, wenn man MUL und ADD macht.

    So wird's schwer meine beiden Algorithmen zu vergleichen, insofern rechne ich keine Pipeline-Optimierungen ein. Mit dem Worst-Case-Szenario rechne ich, gg...



  • Nimm doch einen Profiler!



  • Das hängt natürlich stark vom Prozessor ab. Intel gibt Daten zur Ausführungsgeschwindigkeit im Intel(R) Architecture Optimization Reference Manual im Kapitel C an. Außerdem sind die Angaben nicht mehr einfach in Takten zu sehen, da viel Pipelining etc. ins Spiel kommt, aber Näheres dazu im Manual.


Anmelden zum Antworten