Egzekucja spekulacyjna

W informatyce , spekulatywne wykonanie odpowiada przewidywanej premiery w instrukcji , to znaczy, nie będąc pewna, że to naprawdę musi być wykonany.

Rodzaje

Generalnie w programie można wyróżnić trzy typy instrukcji i deklaracji:

Pierwsza grupa nie może odnieść korzyści z egzekucji spekulacyjnej, ponieważ jej członkowie muszą w każdym przypadku zostać straceni.

Drugą grupę można łatwo odrzucić na bok, tak samo jak leniwa ocena .

Ze swojej strony trzecia grupa jest rzeczywiście celem spekulatywnej egzekucji, jej członkowie mogą faktycznie być wykonywane w konkurencji z instrukcjami pierwszej grupy, dopóki nie będziemy mogli ocenić, czy są one przydatne, czy też musimy umieścić je w drugiej. Grupa. Ta konkurencja oznacza, że ​​wykonywanie spekulacyjne może przebiegać równolegle .

Użyteczność

Wykonywanie spekulatywne to optymalizacja wydajności, która jest przydatna tylko wtedy, gdy przedwczesne wykonanie instrukcji zajmuje mniej czasu i miejsca niż jej normalne wykonanie, wystarczająco, aby zrekompensować możliwość, że ta instrukcja dała wynik, który nie zostanie ostatecznie wykorzystany.

W mikroprocesory nowoczesne wykorzystujące rurociągu służyć realizacji spekulacyjnego w celu zmniejszenia kosztów instrukcji rozgałęzienia warunkowe. Gdy napotkana jest warunkowa instrukcja rozgałęzienia, procesor zgaduje, którą ścieżkę rozgałęzienia program prawdopodobnie będzie podążał (nazywa się to prognozowaniem rozgałęzienia ) i rozpoczyna wykonywanie odpowiednich instrukcji. Jeśli założenie okaże się błędne, wszystkie obliczenia, które miały miejsce po rozgałęzieniu, są odrzucane. Przedwczesne wykonanie jest stosunkowo niedrogie, ponieważ bez niego etapy rurociągu biorące udział w obliczeniach pozostawałyby nieaktywne do czasu poznania wyniku rozgałęzienia. Jednak zmarnowane instrukcje używają cykli zegara, a na przykład na laptopie te cykle zużywają energię. Dlatego zawsze jest kara za każdą nieprawidłowo przewidzianą gałąź. Coraz więcej procesorów (takich jak Intel Pentium II i jego następcy) ma instrukcje warunkowego przenoszenia. Ten rodzaj instrukcji umożliwia przenoszenie danych np. Między rejestrem a pamięcią tylko wtedy, gdy jest spełniony warunek. Dlatego nie ma już rozgałęzień, a kara spowodowana złą prognozą jest mniejsza.

Natychmiastowa realizacja

Chociaż rzadko wspomina się jako takie, natychmiastowe wykonanie jest również spekulatywną formą egzekucji (chociaż sytuację komplikuje obecność skutków ubocznych . Wykonanie jest często tańsze ze względu na wymagane wartości. stos i nie muszą być przechowywane, a następnie pobierane ze sterty .

bezpieczeństwo

Wykonywanie spekulacyjne może mieć konsekwencje dla bezpieczeństwa, takie jak luka Spectre .