Hardware -Performance -Zähler
Im Computers, Hardware -Performance -Zähler (HPC),[1] oder Hardware -Zähler sind eine Reihe von Spezialzwecken Register in modern eingebaut Mikroprozessoren Aufbewahrung der Zählungen von Hardware-bezogenen Aktivitäten in Computersystemen. Fortgeschrittene Benutzer verlassen sich häufig auf diese Zähler, um niedrige Niveau durchzuführen Performance-Analyse oder Stimmung.
Implementierungen
Die Anzahl der verfügbaren Hardware -Zähler in einem Prozessor ist begrenzt, während jeweils Zentralprozessor Das Modell könnte viele verschiedene Ereignisse haben, die ein Entwickler gerne messen möchte. Jeder Zähler kann mit dem zu überwachenden Index eines Ereignisartyps programmiert werden, wie ein L1 -Cache -Fehl oder ein Zweig -Fehlverhalten.
Einer der ersten Prozessoren, der einen solchen Zähler und einen zugehörigen Anweisungen implementiert RDPMC
Zu darauf zuzugreifen war die Intel Pentium, aber sie wurden erst dokumentiert, bis Terje Mathisen einen Artikel über Reverse Engineering in sie schrieb Byte Juli 1994.[2]
Die folgende Tabelle zeigt einige Beispiele für CPUs und die Anzahl der verfügbaren Hardware -Zähler:
Prozessor | Verfügbare HW -Zähler |
---|---|
Ultrassparc II | 2 |
Pentium III | 2 |
ARM11 | 2 |
Amd Athlon | 4 |
IA-64 | 4 |
Arm Cortex-A5 | 2[3] |
Arm Cortex-A8 | 4 |
Arm Cortex-A9 mpcore | 6 |
Power4 | 8 |
Pentium 4 | 18 |
Gegen Softwaretechniken
Im Vergleich zu Software ProfilerHardware-Zähler bieten einen geringen Zugriff auf eine Fülle detaillierter Leistungsinformationen im Zusammenhang mit den Funktionseinheiten, Caches und dem Hauptspeicher von CPUs usw. Ein weiterer Vorteil der Verwendung besteht darin, dass im Allgemeinen keine Quellcode-Änderungen erforderlich sind. Die Typen und Bedeutungen von Hardware -Zähler variieren jedoch von einer Architektur zu einer anderen aufgrund der Variation in Hardware -Organisationen.
Es kann Schwierigkeiten geben, die Leistungsmetriken auf niedriger Ebene zurück zum Quellcode zu korrelieren. Die begrenzte Anzahl von Registern, um die Zähler zu speichern, zwingen Benutzer häufig, mehrere Messungen durchzuführen, um alle gewünschten Leistungsmetriken zu sammeln.
Anleitungsbasierte Stichprobe

Modern Superscalar Prozessoren planen und führen mehrere Anweisungen aus und führen Sie aus außer Betrieb zu einer Zeit. Diese "im Flug" Anweisungen können jederzeit in den Ruhestand treten, abhängig vom Speicherzugriff, Treffer im Cache, Stände in der Pipeline und vielen anderen Faktoren. Dies kann dazu führen, dass Leistungsereignisse auf die falschen Anweisungen zurückzuführen sind, was eine präzise Leistungsanalyse erschwert oder unmöglich macht.
AMD führte Methoden ein, um einige dieser Nachteile zu mildern. Zum Beispiel haben die Opteron -Prozessoren implementiert [4] 2007 eine Technik, die als unterrichtsbasierte Stichprobe (oder IBS) bekannt ist. Die Implementierung von IBS durch AMD bietet Hardware -Zähler sowohl für die Abrufenabtichproben (die Vorderseite der Superscalarar -Pipeline) als auch für die OP -Probenahme (die Rückseite der Pipeline). Dies führt zu diskreten Leistungsdaten, die pensionierte Anweisungen mit der Anweisung "Eltern" AMD64 in Verbindung bringen.
Siehe auch
Verweise
- ^ https://www.resesearchgate.net/profile/mohamed-zahran/publication/241623685_are_hardware_performance_counters_a_cost_way_way_for_integrity-cost-fect-Program-harn-harn-harn-harn-harn-harn-harn- und -TiGe-hargs/555555555555555555555537 PDF[Bare URL PDF]
- ^ "Pentium -Geheimnisse". Gameev.net. Abgerufen 2012-02-14.
- ^ "Dokumentation - Armentwickler". Entwickler.arm.com.
- ^ "Anweisungsbasierte Stichprobe: Eine neue Leistungsanalysetechnik für 10H-Prozessoren von AMD Family" (PDF). AMD. Abgerufen 2015-10-16.