2010-04-23 4 views
9

Ich versuche eine Referenz für ungefähr wie viele CPU-Zyklen verschiedene Operationen benötigen.Ungefähre Anzahl von CPU-Zyklen für verschiedene Operationen

Ich brauche keine genauen Zahlen (da dies zwischen den CPUs variieren wird), aber ich möchte etwas relativ Glaubwürdiges, das Ballpark-Zahlen gibt, die ich im Gespräch mit Freunden zitieren könnte.

Als Beispiel wissen wir alle, dass die Gleitkommadivision mehr CPU-Zyklen benötigt als ein Bitshift.

Ich würde vermuten, dass der Unterschied ist, dass die Division rund 100 Zyklen ist, wo als Schicht 1 ist, aber ich bin auf der Suche nach etwas zu zitieren, um dies zu unterstützen.

Kann jemand solch eine Ressource empfehlen?

+2

Welcher Prozessor? – nos

Antwort

1

Dies wird hardwareabhängig sein. Am besten führen Sie einige Benchmarks für die jeweilige Hardware durch, die Sie testen möchten.

würde eine Benchmark in etwa so aus:

  • Run eine primitive Operation eine Million Mal (zum Beispiel das Hinzufügen von zwei ganzen Zahlen)
  • Nehmen Sie die Zeit, die (in Sekunden etwa) laufen nahm
  • Multiplizieren Sie mit der Anzahl der Zyklen, die Ihre Maschine pro Sekunde ausführt - dies gibt Ihnen die Gesamtzahl der verbrauchten Zyklen.
  • Teilen Sie 1000000 durch die Nummer aus dem vorherigen Schritt - dies gibt Ihnen die Anzahl der Anweisungen pro Zyklus. Beachten Sie, dass mit Pipelining, dies könnte weniger als 1.
3

Für x86-Prozessoren finden Sie Intel® 64 and IA-32 Architectures Optimization Reference Manual, wahrscheinlich Anhang C.

Es ist jedoch in keiner Weise einfach, herauszufinden, wie viele Zyklen eine Anweisung dauert auf einem modernen x86-Prozessor ausführen, da es zu viel abhängt zB Zugriff auf Daten im Cache, ausgerichteter Zugriff, ob die Verzweigungsvorhersage fehlschlägt, ob es einen Stillstand in der Befehlspipeline gibt und viele andere Dinge.

4

Ich habe eine kleine App, um dies zu testen. Ein sehr ungefähre app SynthMaker kostenlose Ausgabe verwendet ... e für leer ist, sind sehr Zahlen ca. Zyklen

divide|e:115|10 
    mult|e: 48|10 
    add|e: 48|10 
    subs|e: 50|10 
compare>|e: 50|10 
    sin|e:135:10 

Die Ablesungen im Zyklus Analysator von 50 bis 100 stark variieren, in der Regel einfach oder doppelt der erwarteten Menge, Dies sind Zahlen, die Mittelwerte darstellen, der Zyklusanalysator ist ein sehr grobes Werkzeug, aber es gibt faire Ergebnisse, eine Workaround-Benutzer gemacht Exponent in ASM codiert, die sowohl die exp und die Basis mit Audio-Rate zum Beispiel ist etwa 800 Zyklen, so I berechnet Ich würde sagen, die obigen Zahlen liegen nahe bei mindestens 50 Prozent. Ich dachte, die Kluft wäre viel mehr! Es scheint ungefähr doppelt so viel. Wenn Sie möchten, dass die Datei, die ich gemacht habe, in SM kostenlose Version läuft, mailen Sie mir, ich würde eine EXE speichern, deshalb habe ich es gemacht, aber Sie können in der freien Version nicht speichern, alberne mich! Ich werde es nicht von Platz eins in der Version 1.17 codieren:/ ant.stewart am Ort yahoo dotty com.

Verwandte Themen