2015-02-15 16 views
8

W przypadku większości instrukcji dla Intel Intrisics Guide ma również wartość opóźnienia i przepustowości. Przykład:Przepustowość 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 

Co dokładnie oznaczają te liczby? Myślę, że wolniejsze opóźnienie oznacza, że ​​wykonanie polecenia zajmuje więcej czasu, ale przepustowość 1 dla Nehalem i 0,5 dla bluszczu oznacza, że ​​polecenie jest szybsze w Nehalem?

+2

Nowoczesne rdzenie mają * dwie * jednostki wykonawcze, które mogą wykonywać instrukcję w tym samym czasie. Więc jeśli świeci słońce i masz wiatr w plecach, a twój program ma dwa z nich blisko siebie, to oboje kończą w jednym cyklu. Sprawiając, że twój profiler wygląda, że ​​zajęło mu to pół cyklu. –

Odpowiedz

10

W „latency” dla instrukcji, ile zegar cykli przybiera wykonać jedną instrukcję (jak długo trzeba czekać na rozkaz do wykonania.

Zwykle przepustowość jest liczba instrukcji na cykl zegara, ale tutaj przepustowość to liczba cykli zegara na niezależne uruchomienie rozkazu - więc 0,5 cykli zegarowych oznacza, że ​​2 instrukcje mogą być wydane w jednym cyklu zegarowym, a wynik jest gotowy w następnym cyklu zegara. https://software.intel.com/en-us/articles/measuring-instruction-latency-and-throughput

+0

Zostało to opisane tutaj: https://software.intel.com/en-us/articles/measuring-instrukcja-latency-and-throughput – Novelocrat

+0

@Novelocrat: Tak jest. –

+1

Nie, przepustowość to liczba instrukcji na cykl zegara. Intel cytuje wzajemną przepustowość i nazywa ją przepustowością. –

4

Poniżej cytat ze strony Intela: Measuring Instruction Latency and Throughput.

Latency i przepustowość

Latency jest liczba zegarów procesorów trwa do instrukcji mieć jego dane dostępne do wykorzystania przez inną instrukcją. Dlatego też instrukcja o opóźnieniu 6 taktów będzie dysponować danymi dla innej instrukcji, którą wiele zegarów po jej rozpoczęciu wykonuje.

Przepustowość to liczba taktów procesora wymaganych do wykonania lub wykonania obliczeń przez instrukcję . Instrukcja o przepustowości 2 zegarów wiązałaby swoją jednostkę wykonawczą dla tego wielu cykli, co uniemożliwia wykonanie instrukcji wymagającej wykonania tej jednostki wykonawczej . Dopiero po wykonaniu instrukcji z jednostką wykonawczą można przejść do następnej instrukcji.