2015-02-15 12 views
8

Auf der Intel Intrisics Guide für die meisten Anweisungen hat es auch einen Wert für Latenz und Durchsatz. Beispiel:SIMD Latency Durchsatz

__m128i _mm_min_epi32

Performance 
Architecture Latency Throughput 
Haswell  1  0.5 
Ivy Bridge 1  0.5 
Sandy Bridge 1  0.5 
Westmere  1  1 
Nehalem  1  1 

Was genau bedeuten diese Zahlen? Ich denke, eine langsamere Latenz bedeutet, dass der Befehl länger dauert, aber Durchsatz 1 für Nehalem und 0,5 für Ivy bedeutet, dass der Befehl auf Nehalem schneller ist?

+2

Moderne Kerne haben * zwei * Ausführungseinheiten, die den Befehl zur gleichen Zeit ausführen können. Wenn also die Sonne scheint und der Wind in deinem Rücken ist und dein Programm zwei davon nahe beieinander hat, dann schließen beide in einem einzigen Zyklus ab. Damit es für Ihren Profiler aussah, dass sie einen halben Zyklus dauerte. –

Antwort

10

Die „latency“ für einen Befehl ist, wie viele Taktzyklen es die eine Anweisung auszuführen nimmt (wie lange dauert es die Anweisung dauern.

Normalerweise Durchsatz vervollständigen die Anzahl der Befehle pro Taktzyklus, aber hier ist der Durchsatz die Anzahl der Taktzyklen pro unabhängigem Befehlsstart - also 0,5 Taktzyklen bedeutet, dass 2 Befehle in einem Taktzyklus ausgegeben werden können und das Ergebnis zum nächsten Taktzyklus bereit ist.

Intel Dokumente hier: https://software.intel.com/en-us/articles/measuring-instruction-latency-and-throughput

+0

Dies ist hier beschrieben: https://software.intel.com/en-us/articles/measuring-instruction-latency-and-throughput – Novelocrat

+0

@Novelocrat: So ist es. –

+1

Nein, der Durchsatz ist die Anzahl der Befehle pro Taktzyklus. Intel zitiert den reziproken Durchsatz und nennt ihn Durchsatz. –

4

Das folgende Zitat stammt von Intels Seite Measuring Instruction Latency and Throughput.

Latency und Durchsatz

Latenz ist die Anzahl der Prozessortakte es für einen Befehl nimmt seine Daten zur Verwendung durch einen anderen Befehl zur Verfügung zu haben. Daher wird eine Anweisung, die eine Latenzzeit von 6 Takten hat, ihre Daten für eine andere Anweisung, dass viele Takte nach seiner Ausführung starten.

Durchsatz ist die Anzahl der Prozessortaktgeber, die für eine -Anweisung benötigt werden, um die Berechnungen auszuführen oder auszuführen. Ein Befehl mit einem Durchsatz von 2 Takten würde seine Ausführungseinheit für viele Zyklen binden, was verhindert, dass ein Befehl, der diese Ausführungseinheit benötigt, ausgeführt wird. Erst nach der Ausführung der Anweisung mit der Ausführungseinheit kann der nächste Befehl eingegeben werden.