2012-06-30 7 views
9

Chcę wiedzieć, jak działa przewidywanie gałęzi procesora Intel i7?O prognozie gałęzi i7

Currenly, znam predyktora o nazwie "dynamiczne prognozy gałęzi".

Dla predyktora 1-bitowego: Sprzęt zawsze przewiduje, że instrukcja rozgałęzienia będzie miała ten sam kierunek, w którym wykonano ostatnią operację.

Udoskonalona wersja działająca lepiej w praktyce jest 2-bitowym predyktorem. W celu poprawienia dokładności przewidywania w celu zwiększenia dokładności prognoz wprowadzono 2-bitowe schematy przewidywania. W tych schematach prognoza musi być błędna dwa razy, zanim zostanie zmieniona.

Czy i7 ma ten sam predyktor co powyżej?

+4

Mogę niemal zagwarantować, że wszystkie szczegóły są zastrzeżoną tajemnicą firmy. – Mysticial

Odpowiedz

9

Większość informacji na temat predyktora gałęzi pochodzi z testów. Intel nie ujawnił zbyt wiele szczegółów. Kara za popełnienie błędu wynosi około 18 cykli zegara, dlatego ważne jest dokładne przewidywanie rozgałęzień.

Intel używa dwupoziomowego predyktora gałęzi. Uważa się, że poziom wewnętrzny jest niezmieniony w stosunku do procesorów Core 2.

Zewnętrzny poziom jest bardziej wyrafinowany i może nawet prawidłowo przewidzieć pętle o stałych liczbach do 64. Używane są dwa 18-bitowe globalne bufory historii. Jedna zawiera wszystkie skoki, które zostały wykonane co najmniej raz. Drugi zawiera najważniejsze skoki. (Liczba wpisów w tych buforach jest nieznana).

Należy zauważyć, że pośrednie skoki i wywołania mają własne predyktory.

6

Krótka odpowiedź brzmi: nie.

Jestem przekonany, że żaden procesor Intel nie użył jednobitowego predyktora, który opisujesz.

Oryginalny Pentium używał dwubitowego deskryptora, tak jak opisujesz. Cztery użyte wartości były zwykle określane jako "zdecydowanie nie brane", "słabo niepodjęte", "słabo wzięte" i "silnie wzięte". Za każdym razem, gdy branża jest brana, licznik jest przesuwany o jedno miejsce w kierunku "silnie wzięty". Za każdym razem, gdy gałąź nie jest brana, przesuwa się o jeden punkt w kierunku "zdecydowanie nie jest brany". Jest to licznik nasycający, więc jeśli (na przykład) brana jest gałąź, gdy licznik jest już "mocno zajęty", licznik po prostu się nie zmienia. [Powinienem dodać: oto, jak Intel to udokumentował i najwyraźniej zamierzał działać - jeśli pamięć służy, Agner Fog i Terje Mathiesen odkryli, że to działa trochę inaczej - i ogólnie nie tak dobrze jak to).

Od Pentium/MMX i Pentium Pro zaprojektowano nieco bardziej wyrafinowany dwupoziomowy predyktor gałęzi. Dodano 4-bitową historię gałęzi, którą wybrał jeden z 16 2-bitowych liczników. Oznaczało to, że gdybyś miał wzorzec (na przykład) wzięty, wzięty, niepobrany, wzięty (a następnie powtórzony), to szybko by się do niego dopasował i poprawnie przepowiedział wszystkie gałęzie.

Nie jestem pewien o szczegółach przewidywania rozgałęzień w i7, ale myślę, że to na pewno powiedzieć, że jest to co najmniej tak wyrafinowana jak Pentium Pro był, a nie powrotem do oryginału Pentium jest.

+0

Należy pamiętać, że dwubitowe predyktory mogą być nasycone (tj. Z jednego stanu do drugiego, z silnie przyjętymi lub silnie nieobciętymi granicami), LUB mogą mieć licznik histerezy, który pozwala im przejść od słabego, nie odebranego do mocno wzięty i od słabo wzięty do silnie nie wzięty bezpośrednio. –