Procesory
Artykuł
Mateusz Brzostek, Czwartek, 2 marca 2017, 15:06

Schedulery i jednostki wykonawcze

Schedulery i jednostki wykonawcze Zen przynoszą następną diametralną różnicę względem K15. Mikrooperacje trafiają do sześciu osobnych schedulerów, po jednym dla każdej z czterech jednostek arytmetyki stałoprzecinkowej i dwóch jednostek generowania adresów. Sześć jednostek wykonawczych to prawie tyle samo co w architekturach Haswell i Skylake – te mają jeszcze trzecią jednostkę generowania adresów. Każdy scheduler śledzi 14 instrukcji – w sumie 84 instrukcje, prawie dwa razy więcej niż w K15.

Pula rejestrów to PRF (Physical Register File) – przemianowywanie rejestrów działa bez przesuwania danych między rejestrami; dla oszczędności energii zmienia się tylko ich nazwy. Liczba rejestrów, 168, jest taka sama jak w architekturach Haswell i Broadwell.

W odróżnieniu od jednostek ALU w procesorach Intela w Zen wszystkie są symetryczne – mają takie same możliwości wykonywania instrukcji i nie są wyspecjalizowane.

Część zmiennoprzecinkowa ma cztery jednostki wykonawcze, co pozwala wykonać maksymalnie cztery instrukcje 64-bitowe lub dwie FMA w jednym cyklu zegara. Scheduler łączy niektóre instrukcje w makrooperacje, ale dopiero przed wykonaniem, kiedy zależności między instrukcjami są już rozwiązane. Mamy do czynienia z pewną formą wewnętrznych instrukcji SIMD operujących jednocześnie na czterech 64-bitowych rejestrach, ale szczegóły nie są znane.

W części zmiennoprzecinkowej zastosowano dodatkową kolejkę instrukcji czekających na wysłanie do schedulera. Dzięki temu operacje zmiennoprzecinkowe można natychmiast usunąć z kolejki mikrooperacji (patrz schemat na stronie 2.) i zwolnić w niej miejsce na więcej operacji stałoprzecinkowych. W ten sposób wolno wykonywane instrukcje zmiennoprzecinkowe i zapełniony scheduler FP nigdy nie powinny opóźniać pracy części stałoprzecinkowej. To szczególnie ważne ze względu na SMT – oba wątki powinny jak najczęściej mieć dostęp do jednostek stałoprzecinkowych.

SMT – symultaniczna wielowątkowość

Rdzeń Zen może prowadzić jednocześnie dwa wątki dzięki technice SMT. Niemal wszystkie zasoby procesora są dostępne dla obu wątków. Większość jest przydzielana do konkretnego wątku na zasadzie algorytmu karuzelowego (oznaczone na czerwono), w którym oba wątki otrzymują na przemian małe przedziały czasu (lub pamięci) na wykonanie swoich zadań.

Układy przewidywania skoków oraz przemianowywania rejestrów (oznaczone na niebiesko) są współdzielone w bardziej zaawansowany sposób. Szczegóły algorytmów są tajemnicą, ale wiemy, że priorytet otrzymują krótsze lub bardziej krytyczne zadania (od których wyniku więcej zależy). Część struktur jest „na sztywno” podzielona między wątki (oznaczone na zielono), co nie jest optymalnym rozwiązaniem z punktu widzenia wydajności, ale było konieczne, żeby nie poświęcać zbyt wielu tranzystorów, zbyt dużo powierzchni jądra i zbyt wiele energii na implementację SMT.

SMT można wyłączyć w UEFI niektórych płyt głównych. Z czasem ta możliwość na pewno pojawi się na wszystkich płytach.

Spis treści
Ocena artykułu:
Ocen: 37
Zaloguj się, by móc oceniać
Artykuły spokrewnione
Aktualności spokrewnione
Facebook
Ostatnio komentowane