cpuid
wird als Serialisierungsanweisung verwendet, um die Ausführung beim Benchmarking zu verhindern, da die Ausführung von Benchmarking-Anweisungen möglicherweise vor rdtsc
neu geordnet wird, wenn sie allein verwendet wird. Meine Frage ist, ob es noch möglich ist, dass die Anweisungen unter rdtsc
zwischen cpuid
und rdtsc
umbestellt werden können? Da rdtsc
keine Anweisung zum Serialisieren ist, können Anweisungen um sie herum frei angeordnet werden?cpuid + rdtsc und Out-of-Order-Ausführung
5
A
Antwort
1
Da RDTSC von keiner Eingabe abhängig ist (es braucht keine Argumente), wird die OOO-Pipeline im Prinzip so schnell wie möglich ausgeführt. Der Grund, warum Sie eine Serialisierungsanweisung hinzufügen, bevor das RDTSC nicht früher ausgeführt werden soll.
Es gibt eine Antwort von John McCalpin here, könnten Sie es nützlich finden. Er erklärt die Neuordnung der OOO für die RDTSCP-Anweisung (die sich von RDTSC anders verhält), die Sie möglicherweise stattdessen verwenden möchten.
Verwandte Themen
- 1. "cpuid" vor "rdtsc"
- 2. Unterschied zwischen Rdtscp, Rdtsc: Speicher und CPU/Rdtsc?
- 3. Genaue Speicherzugriffszeitprüfung mit RDTSC und RDTSCP?
- 4. Uhr, rdtsc und CLOCKS_PER_SEC
- 5. Sekunden Berechnung mit Rdtsc
- 6. Intrinsics für CPUID wie Informationen?
- 7. CPUID auf Intel i7 Prozessoren
- 8. Was ist die CPUID-Standardfunktion 01H?
- 9. Ermitteln Sie CPUID wie im Intel Intrinsics Guide aufgeführt
- 10. Wie erkennt man, ob RDTSC einen konstanten Ratenzählerwert zurückgibt?
- 11. Die Verwendung von rdtsc() in meinem Programm, um die Anzahl der Taktzyklen für Einzel- und Doppelwort-Operationen zu erhalten?
- 12. Wie man den Overhead der for-Schleife mit rdtsc in c-Programmierung
- 13. Ich brauche Hilfe Intel Inline-asm zu AT & T so Konvertieren ich es mit gcc kompilieren
- 14. Die Befehlspipeline von Intel Core 2 Duo leeren?
- 15. Taktzyklus mit GCC
- 16. Kompilierfehler: Kernel-Modul
- 17. Die Erstellung von std :: thread verlangsamt das Hauptprogramm um 50%
- 18. Wie kompilieren wir Kernel-Code in C?
- 19. libvirtError: interner Fehler Ich finde kein passendes CPU-Modell für gegebene Daten
- 20. Wie finde ich die CPU, auf der der aktuelle Thread läuft, für Mac und BSD?
- 21. Array der Größe 1 MB
- 22. Passing Variable von Assembler C
- 23. Wie weisen Sie einer Struktur mit Bitfeldern Werte zu?
- 24. Wie erhalten Sie Hardware-Informationen in Windows mit C++?
- 25. out of range Zufallszahlengenerierung in C++ mit tr1
- 26. Assembly Segmentation Fault
- 27. Was macht __asm__ __volatile__ in C?
- 28. Art des Intel Broadwell-Prozessors, der 16 COS-Register unterstützt
- 29. können Sie Masm in Linux kompilieren/ausführen?
- 30. CPU und Speicherverbrauch von jemalloc im Vergleich zu glibc malloc