2015-02-15 16 views
8

Sul numero Intel Intrisics Guide per la maggior parte delle istruzioni, ha anche un valore per latenza e velocità effettiva. Esempio:Throughput di latenza SIMD

__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 

cosa esattamente questi numeri significano? Immagino che una latenza più lenta significhi che il comando richiede più tempo per essere eseguito, ma Throughput 1 per Nehalem e 0.5 per Ivy, significa che il comando è più veloce su Nehalem?

+2

I core moderni hanno * due * unità di esecuzione che possono eseguire l'istruzione contemporaneamente. Quindi se il sole splende e hai il vento nella schiena e il tuo programma ha due di questi vicini, entrambi si completano in un unico ciclo. Facendo apparire al tuo profiler che hanno impiegato un mezzo ciclo. –

risposta

10

La "latenza" per un'istruzione è quante orologio cicli prende l'eseguire un'istruzione (quanto tempo è necessario per l'istruzione per completare.

Normalmente volume è il numero di istruzioni per ciclo di clock, ma qui il throughput è il numero il numero di cicli di clock per avvio di istruzioni indipendenti - quindi 0,5 cicli di clock significa che è possibile emettere 2 istruzioni in un ciclo di clock e il risultato è pronto al prossimo ciclo di clock

Intel documenta che qui: https://software.intel.com/en-us/articles/measuring-instruction-latency-and-throughput

+0

Questo è descritto qui: https://software.intel.com/en-us/articles/measuring-instruction-latency-and-throughput – Novelocrat

+0

@Novelocrat: Così è. –

+1

No, il throughput è il numero di istruzioni per ciclo di clock. Intel sta citando il throughput reciproco e chiamandolo throughput. –

4

Quanto segue è una citazione dalla pagina Intel Measuring Instruction Latency and Throughput.

Latenza Throughput e

latenza è il numero di clock del processore impiegato un'istruzione ad avere i suoi dati disponibili per l'uso da un'altra istruzione. Pertanto, un'istruzione che ha una latenza di 6 orologi avrà i suoi dati disponibili per un'altra istruzione che molti orologi dopo l'avvio della sua esecuzione .

Il throughput è il numero di clock del processore necessario per un'istruzione da eseguire o eseguire i calcoli. Un'istruzione con un throughput di 2 orologi legherebbe la sua unità di esecuzione per quello molti cicli che impedisce un'istruzione che richiede l'esecuzione di quell'unità di esecuzione . Solo dopo che l'istruzione è stata eseguita con l'unità di esecuzione , è possibile immettere l'istruzione successiva.