Präzise SSE- und MMX -Anweisungsreferenz mit Latenzen und Durchsatz
Frage
Ich versuche, einige Arithmetik zu optimieren, indem ich die MMX- und SSE -Befehlssets mit Inline -Baugruppe verwendete. Ich konnte jedoch keine guten Referenzen für die Zeiten und Verwendung dieser erweiterten Anweisungssätze finden. Können Sie mir bitte helfen, Referenzen zu finden, die Informationen über den Durchsatz, die Latenz, Operanden und möglicherweise kurze Beschreibungen der Anweisungen enthalten?
Bisher habe ich festgestellt:
Intel -AnweisungsreferenzenIntel 64 und IA-32 Architekturentwicklerhandbuch: Vol. 2a undIntel 64 und IA-32 Architekturentwicklerhandbuch: Vol. 2b
Intel -Optimierungshandbuchhttp://www.intel.com/assets/pdf/manual/248966.pdf
Timings der Ganzzahloperationenhttp://gmplib.org/~tege/x86-timing.pdf
Lösung
Die Intel -Anweisungsreferenz sollte einen angemessenen Leitfaden für die Anweisungen geben, die diese Anweisungen tatsächlich tun, hätte ich gedacht? Es hat Pseudocode für jeden einzelnen, eine Beschreibung seiner Operation und in einigen Fällen sogar ein kleines Diagramm eines repräsentativen Falles.
Für Timings gibt es keinen offiziellen Leitfaden, den mir bekannt ist. Die Seite von Agner Fog ist die Standardreferenz:
Andere Tipps
Das Intell's Intrinsic Guide (unten links von der AVX-Seite) befindet sich ein gut organisiertes durchsuchbares Tool, in dem Sie nach SSE-Version und/oder Anweisungsart, z. B. FP-Arithmetik oder ganzzahliger logisch eingrenzen können.
Für jede Anweisung zeigt es auch eine Latenz-/Durchsatztabelle nach CPU und nach Parametern.
Das Timing befindet sich im "Intel -Optimierungshandbuch"; In Anhang C finden Sie den Durchsatz und die Latenzen für jede Anweisung pro CPU -Architektur.