artykuły

AMD Ryzen Threadripper 2950X i Ryzen Threadripper 2990WX – jeszcze więcej rdzeni w desktopie

Psst, chcesz więcej rdzeni?

53 13 sierpnia 2018, 15:03 Mateusz Brzostek

Ryzen Threadripper 2990WX – więcej domen NUMA niż kontrolerów pamięci

Threadripper 2990WX jest osobliwy pod wieloma względami. Różni się fizycznie od 16-rdzeniowych Threadripperów, choć nie widać tego z zewnątrz: dwa jądra krzemowe, które w mniejszych Threadripperach są wprawdzie zamontowane, ale nie podłączone do zasilania ani sygnałowania, tutaj są sprawne i włączone. 

Ponieważ najważniejszym założeniem projektowym było zachowanie kompatybilności 2990WX z podstawką TR4 i całą otoczką (starsze płyty główne, schładzacze z mocowaniem TR4...), trzeba było pozostać przy czterokanałowym kontrolerze pamięci. Jedynym sensownym rozwiązaniem tego problemu było pozostanie przy konfiguracji, w której dwa dwukanałowe kontrolery w położonych naprzeciw siebie jądrach zapewniają cały dostęp do pamięci. Dzięki temu połowa rdzeni ma dostęp dwukanałowy, co zaspokaja ich zapotrzebowanie na przepustowość.

Oczywiście, nie jest to najlepsze wyobrażalne rozwiązanie. Ogromna liczba rdzeni, duża pojemność i duża przepustowość pamięci były założeniami projektowymi procesorów Epyc. Po symulacjach i profilowaniu wydajności zdecydowano, że na każdych osiem rdzeni powinny przypadać dwa kanały RAM-u i pojemność, jaką można zmieścić w czterech modułach. Na każdy wątek w układzie Ryzen Threadripper 2990WX przypada o połowę mniej RAM-u i o połowę mniejsza przepustowość RAM-u, niż w procesorach Epyc. Za to było to jedyne możliwe rozwiązanie – w przeciwnym razie trzeba by stworzyć nowe płyty główne, znacznie droższe, zbudowane z laminatu o większej liczbie warstw i niemieszczące się w typowych obudowach ATX/E-ATX. Jak zaraz pokażemy, pojemność i przepustowość pamięci rzadko jest problemem – rzadziej niż obowiązkowy w tym procesorze tryb NUMA.

Domeny NUMA w Threadripperze 2990WX – widać, że tylko dwie z nich (0 i 2) zawierają pamięć i kontrolery PCI Express. W domenie 0 są nośniki SSD, a w domenie 2 – karta graficzna

Threadripper 2990WX może działać wyłącznie w trybie NUMA, w którym rdzenie, wątki i pule pamięci są podzielone. Dostęp do lokalnej pamięci odbywa się z najmniejszym możliwym opóźnieniem. Dla połowy rdzeni (tych w domenach NUMA z pamięcią) połowa pamięci operacyjnej jest w tej samej domenie, a połowa – w domenie odległej o jedno łącze InfinityFabric. Dla pozostałej połowy rdzeni cała pamięć jest odległa o jedno łącze IF.

Systemy operacyjne zgodne z NUMA (czyli wszystkie współczesne) umieją przypisywać wątki i alokować pamięć w optymalny sposób. Pierwszych osiem wątków jest przypisywanych do rdzeni w jednej domenie NUMA i dostaje pamięć z tej samej domeny. Następnych osiem ląduje w drugiej domenie z pamięcią; potem są zapełniane drugie wątki tych samych rdzeni, a na koniec – wątki należące do domen NUMA bez lokalnej pamięci. Oczywiście, system operacyjny nie wie, co zapewni lepszą wydajność: przypisanie 32 wątków do 16 rdzeni w domenach NUMA z pamięcią czy do 32 rdzeni tak, żeby dwa wątki SMT nie wchodziły sobie w drogę. Po prostu nie ma mechanizmów pozwalających na zaawansowaną kontrolę nad wydajnością w takich przypadkach. Do tego programy mogą prosić OS o przytwierdzenie procesów (koligację) do konkretnych rdzeni i o specyficzną alokację pamięci, a wiele programów (np. Total War: Warhammer) robi to w bardzo głupie sposoby.

Można dla eksperymentu samemu ustawić koligację procesów tak, żeby były ograniczone do jednej domeny NUMA. W Windows wątki 0–15 należą do pierwszej domeny z pamięcią, 48–63 – do drugiej domeny z pamięcią, a 16–31 i 32–47 – do dwóch domen bez pamięci.

Podobnie jak w 16-rdzeniowych Threadripperach mamy do dyspozycji tryb kompatybilności, który można aktywować w programie Ryzen Master – a nawet dwa tryby, bo można wyłączyć połowę albo 3/4 rdzeni. W tym pierwszym trybie procesor zachowuje się podobnie do Threadrippera 2950X ustawionego w tryb NUMA, a w drugim – do Ryzena 7 2700X, który ma dodatkowe drugie tyle pamięci w domenie NUMA bez żadnych procesorów.

Ten sam efekt pozwala osiągnąć zmiana konfiguracji uruchamiania systemu Windows w programie msconfig. Ustawienie liczby procesorów na 32 odpowiada pozycji 1/2 z programu Ryzen Master, a ustawienie jej na 16 odpowiada pozycji 1/4 i pozwala symulować z użyciem 2990WX model Ryzen 7 2700X.

Strona:
  1. Wstęp
  2. Ryzen Threadripper 2950X – ulepszony 1950X
  3. Ryzen Threadripper 2990WX – więcej domen NUMA niż kontrolerów pamięci
  4. MSI X399 MEG Creation – rzut oka
  5. Asus Zenith Extreme – nowy Threadripper na starej płycie głównej
  6. Platforma testowa
  7.     Testy profesjonalne – renderowanie
  8.     Testy profesjonalne – symulacje naukowe
  9.     Testy profesjonalne – uczenie maszynowe
  10.     Testy profesjonalne – kompilacja jądra Linuksa, symulacje szachowe
  11.     Testy profesjonalne – obróbka i kodowanie wideo
  12.     Testy profesjonalne – Adobe After Effects, Adobe Photoshop
  13.     Testy biurowe – Google Chrome, JavaScript, 7-Zip
  14.     Gry (tylko 2950X) – ARMA III, CS:GO
  15.     Gry (tylko 2950X) – Assassin's Creed Origins, Watch Dogs 2, GTA V
  16.     Gry (tylko 2950X) – Wiedźmin 3, Battlefield 1, Deus Ex: Mankind Divided
  17.     Gry (tylko 2950X) – Total War: Warhammer, Cywilizacja VI
  18. Ryzen Threadripper 2950X i 2990WX – pobór energii
  19. Ryzen Threadripper 2950X i 2990WX – podkręcanie (PBO)
  20.     Podkręcanie – renderowanie
  21.     Podkręcanie – OpenFOAM, szachy
  22.     Podkręcanie – obróbka i kodowanie wideo
  23.     Podkręcanie – Adobe After Effects, Adobe Photoshop
  24.     Podkręcanie – Google Chrome, JavaScript, 7-Zip
  25.     Podkręcanie (tylko 2950X) – ARMA III, CS:GO
  26.     Podkręcanie (tylko 2950X) – Assassin's Creed Origins, Watch Dogs 2, GTA V
  27.     Podkręcanie (tylko 2950X) – Wiedźmin 3, Battlefield 1, Deus Ex: Mankind Divided
  28.     Podkręcanie (tylko 2950X) – Total War: Warhammer, Cywilizacja VI
  29. Obciążenie procesora podczas testów linuksowych
  30. Podsumowanie testów wydajności
  31. Ryzen Threadripper 2950X i 2990WX – podsumowanie
3