Alle Intel-CPUs im letzten Jahrzehnt (mindestens) enthalten eine Reihe von Leistungsmonitoren, die eine Vielzahl von Ereignissen zählen. Verfügen die neuesten Intel-CPUs, Core i3, i5 und i7 (alias Nehalem) über einen Mechanismus zum Zählen von Anweisungen pro Uhr (IPC)? Wenn ja, wie werden sie verwendet?
Wenn das möglich ist, werde ich wahrscheinlich den Code dafür in Assembly schreiben, aber Windows- oder Linux-Systemaufrufe können auch nützlich sein.
Ja, der Vtune von Intel (Linux und Windows) kann IPC messen.
Wenn Sie es selbst mit genauen Zählern für einen Teil des Codes messen möchten, müssen Sie einige Leistungs-API wie PAPI oder Perfctr (beide für Linux) verwenden.
Sie verwenden Hardware-Leistungsindikatoren, die in Intel-Handbüchern Ссылка
beschrieben sindVolumen 3D, Kapitel 30 & amp; Anhang A. Ссылка
Vtune verwendet das Verhältnis von "Instructions Retired" und "Non-sleep clockticks" zur Berechnung von CPI ("Cycles per instructions retired"). Für Core2 werden folgende Leistungsindikatoren verwendet: "CPU_CLK_UNHALTED.CORE", "INST_RETIRED.ANY"
Diese Zähler sind für alle Core * CPUs gleich: Anhang A1 von Band 3B, Seite 384:
%Vor%IPC wird mit der aktuellen Menge von Befehlen mit mehreren Befehlen pro Takt bedeutungslos.
Von i7 propoganda Dokument:
Der Chip bot eine breitere Ausführung Kern, so dass der Prozessor zu Füllen Sie bis zu vier vollständige Anweisungen aus gleichzeitig, zusammen mit einem mehr effiziente 14-stufige Pipeline-Verbesserung IPC (Anweisungen pro Uhr) in Vergleich zu Pentium 4 / D
Diese IPC-Anzahl hängt vom Typ des Codes ab, der ausgeführt wird.
Tags und Links x86 intel performancecounter