W teście procesorów Threadripper nie mogliśmy wyczerpać wszystkich interesujących zagadnień, które ich dotyczą. Możemy to nadrobić w tej publikacji. Na początek opiszemy dwa tryby dostępu do pamięci operacyjnej (RAM), które można wykorzystać na platformie TR4, oraz tryb gracza. W najbliższych dniach dodamy na dalszych stronach więcej informacji technicznych, a także praktycznych obserwacji.
SMP i NUMA – czyli jak zbudować komputer z wielu procesorów
Dawno temu komputery były proste: miały jeden procesor, podłączony magistralą równoległą do kontrolera pamięci, do którego z kolei była podłączona pamięć operacyjna. Pewnego dnia ktoś wpadł na pomysł, żeby w jednym systemie umieścić więcej procesorów. Wymyślono różne sposoby ich łączenia, ale najlepszym okazała się konfiguracja SMP – Symmetric Multiprocessing. Symetria w nazwie oznacza, że wszystkie procesory mogą wykonywać te same rodzaje zadań i że mają taką samą pozycję – żaden nie jest traktowany priorytetowo przez system operacyjny ani inne części komputera, na przykład kontroler pamięci.
SMP to bardzo stara technika, pierwszy raz zastosowana w komputerze Burroughs B-825 z 1962 roku – znacznie poprzedza zatem nawet architekturę x86. Jednak najlepiej znanym nam przykładem SMP są pierwsze wieloprocesorowe komputery z procesorami x86. Możliwość pracy w wieloprocesorowej konfiguracji miały Pentium II Xeon (tak, Xeon nie był wtedy oddzielną marką) w 1998 roku, u AMD zaś – Athlony MP w 2001 roku. Schemat takiego systemu jest prosty i pokazuje równorzędność procesorów:
W przedstawionym schemacie łatwo rozpoznać anatomię systemu z kilkoma Pentium III Xeon, jednym dwurdzeniowym Pentium Extreme Edition, albo nawet Core 2 Quad. Procesory wraz z pamięcią podręczną są podłączone do magistrali FSB (system bus). Do tej samej magistrali są podłączone: arbiter, kontroler pamięci (te dwie funkcje realizował kiedyś jeden układ scalony – mostek północny) i kontroler I/O (mostek południowy).
W całym komputerze jest tylko jeden kontroler pamięci i dla każdego procesora jest on tak samo odległy – transfer danych z pamięci do dowolnego procesora odbywa się z takim samym opóźnieniem i taką samą przepustowością.
Odkąd kontroler pamięci zintegrowano w procesorze (pierwszy raz w DEC Alpha 21364, potem w Athlonach 64, dziś we wszystkich popularnych procesorach), łączenie dwóch lub więcej procesorów stało się bardziej skomplikowane.
Co to jest architektura NUMA
W systemie z kilkoma procesorami ze zintegrowanymi kontrolerami pamięci cała pamięć operacyjna należy do jednej przestrzeni adresowej. Pojemność RAM-u podłączonego do wszystkich kontrolerów pamięci jest połączona i dla oprogramowania jednolita. Jednak dostęp do pamięci nie jest jednolity – dane napływają szybciej, jeśli są umieszczone w części pamięci podłączonej do tego procesora, który o nie prosi. Spójrzmy na przykład na schemat blokowy platformy z procesorami AMD FX-70:
Dla programu działającego na którymś z dwóch rdzeni procesora na górze diagramu dostęp do lokalnej pamięci (po niebieskiej trasie) jest szybszy niż do pamięci podłączonej do drugiego procesora. Ponieważ dane trzeba przesłać przez dodatkowy pośredniczący interfejs, w tym przypadku łącze HyperTransport, opóźnienie w dostępie do odległej pamięci zawsze jest większe, a przepustowość zależy od przepustowości tego pośredniczącego interfejsu.
Ta sama niejednolitość pamięci dotyczy wszystkich współczesnych wieloprocesorowych maszyn, niezależnie od producenta i architektury. Taką architekturę pamięci nazwano NUMA – Non Uniform Memory Access. Zauważmy, że w takiej architekturze procesory nadal mają równy priorytet i żaden z nich nie jest uprzywilejowany – wciąż mamy do czynienia z SMP. Żeby odróżnić „tradycyjne” SMP z jedną pulą pamięci od SMP-NUMA z równorzędnymi procesorami, dawne systemy zaklasyfikowano jako UMA – Uniform Memory Access (jednolity dostęp do pamięci).
NUMA kontra klaster obliczeniowy
Klaster obliczeniowy złożony z osobnych komputerów połączonych siecią LAN (albo specjalnymi łączami, takimi jak InfiniBand) też ma wiele równorzędnych procesorów, z których każdy ma własną pulę pamięci. Architektura NUMA ma nad nim istotną przewagę: w takim komputerze jest tylko jedna przestrzeń adresowa. Żadnych danych nie trzeba duplikować, wszystkie procesory pracują na jednym obszarze pamięci, a zawartość ich pamięci podręcznych jest zgodna. Programy mogą wykorzystać tyle pamięci operacyjnej, ile w sumie zainstalowano w całej maszynie.
Teoretycznie można potraktować klaster obliczeniowy z osobnych komputerów jako maszynę NUMA – ale tylko w ramach wirtualnej przestrzeni adresowej systemu operacyjnego, który na nim działa. Procesory i tak muszą tłumaczyć adresy wirtualne na fizyczne.
NUMA z punktu widzenia oprogramowania
Jeśli system operacyjny jest zgodny z NUMA, umie wydzielić obszary wspólnej przestrzeni adresowej i przypisać do nich poszczególne procesory. Taka grupa procesorów i lokalnej dla nich pamięci operacyjnej stanowi osobną domenę NUMA, a w komputerze może być wiele takich domen.
Ponieważ to system operacyjny zarządza podziałem przestrzeni adresowej na strony i przydzielaniem ich programom, może zadbać o to, żeby dane należące do programu były przechowywane w pamięci najbliższej temu rdzeniowi, który wykonuje dany program.
System operacyjny nie wie, co dokładnie robią działające w nim programy, i nie może dostosować alokacji pamięci bardziej szczegółowo. Jeżeli program potrzebuje więcej pamięci, niż jest dostępne w lokalnej puli, system zacznie mu przydzielać pamięć z odległej puli. Wtedy mały segment ważnych, często używanych danych może skończyć w odległej pamięci – choć większą wydajność zapewniłoby umieszczenie go w lokalnej pamięci o małym opóźnieniu. Żeby można było osiągnąć najwyższą wydajność w komputerze o architekturze NUMA, nie tylko system operacyjny, ale również oprogramowanie użytkowe musi brać pod uwagę topologię pamięci i procesorów. Windows udostępnia funkcje pozwalające programom zidentyfikować domeny NUMA i przypisać procesy i wątki do konkretnych domen (patrz dokumentacja NUMA w Windows).
Wszystkie nowoczesne systemy operacyjne są zgodne z NUMA bez ograniczeń licencyjnych: Windows 7 i nowsze, Linux z jądrem 3.8 lub nowszym, FreeBSD 11.0 i nowsze. Warto zauważyć, że Windows XP i Vista nie są zgodne z NUMA – w zależności od BIOS-u/UEFI komputera albo nie będą działać, albo będą traktować całą przestrzeń adresową jako jednolitą.
Threadripper – NUMA w komputerze osobistym
Topologia pamięci w Ryzen Threadripper
Ze względu na specyficzną konstrukcję procesory Ryzen Threadripper (oraz Epyc) mogą mieć architekturę NUMA nie tylko w maszynie wieloprocesorowej, ale też w ramach jednego procesora. Threadripper jest zbudowany z dwóch krzemowych jąder, połączonych łączem Infinity Fabric. Każde z nich ma dwukanałowy kontroler pamięci.
W obudowie procesora Threadripper są dwa aktywne jądra. (Zawsze te same – lewe górne i prawe dolne, jeśli płyta główna ma układ zasilania CPU na górze, a złącza PCI-E na dole. Więcej o budowie procesora napiszemy na jednej z dalszych stron). Dla topologii pamięci ważne jest to, że taki procesor ma dwie domeny NUMA. Dwa CCX (osiem rdzeni) mają dostęp do własnego dwukanałowego kontrolera pamięci z małym opóźnieniem i wysoką przepustowością. Z drugim dwukanałowym kontrolerem pamięci, umieszczonym w drugim jądrze, komunikują się przez łącze Infinity Fabric, co wiąże się z większym opóźnieniem i nieco mniejszą przepustowością.
Architektura NUMA to zwyczajna i często spotykana rzecz w świecie serwerów i wieloprocesorowych stacji roboczych, ale bardzo rzadko spotykana w świecie desktopów. Znakomita większość oprogramowania nie jest gotowa na NUMA – traktuje całą przydzieloną sobie pamięć jako jednolitą przestrzeń.
Największą wydajność w systemie z NUMA można osiągnąć tylko wtedy, kiedy oprogramowanie bierze pod uwagę topologię maszyny. Jednak żeby zapewnić najbardziej przewidywalną wydajność w programach niegotowych na NUMA, procesory Threadripper można przestawiać pomiędzy dwoma trybami dostępu do pamięci: NUMA (local) i UMA (distributed).
Domyślnie są one skonfigurowane tak, żeby wyglądały dla oprogramowania jak maszyna UMA. Adresy w pamięci są równomiernie rozłożone między cztery kanały RAM-u (na przemian), tak jakby w procesorze był jeden czterokanałowy kontroler pamięci. W ten sposób spośród czterech kolejnych bloków pamięci (rozmiar tych bloków można zmienić w UEFI na niektórych płytach) dwa są umieszczone w dwóch kanałach lokalnego kontrolera RAM-u, a dwa następne – w pamięci podłączonej do odległego kontrolera. Ponieważ programy zwykle pobierają duże porcje danych, mogą czerpać dane z czterech kanałów jednocześnie, co zapewnia dużą przepustowość. Średnie opóźnienie w dostępie do pamięci jest pośrednie między opóźnieniami w dostępie do lokalnego i odległego kontrolera pamięci.
Po zmianie trybu dostępu do pamięci na lokalny (NUMA) procesor przedstawia się systemowi operacyjnemu jako 2 domeny NUMA, każda z 2-kanałowym kontrolerem pamięci i 8 rdzeniami z 16 wątkami. System albo oprogramowanie mogą wtedy tak samo używać całej pojemności pamięci, ale mogą umieszczać dane najpierw w obszarze pamięci lokalnym dla danego wątku.
Procesory Ryzen Threadripper są domyślnie skonfigurowane w trybie UMA (distributed). Można ręcznie przełączyć tryb dostępu do pamięci w UEFI albo za pomocą programu Ryzen Master:
Wystarczy wybrać któryś z własnych profili (pierwsza zakładka wyświetla tylko aktualny status – nie można w niej nic zmienić) i przestawić opcję Memory Access Mode (1).
Tryb kompatybilności, twórcy i gracza
Żeby ułatwić entuzjastom dostosowanie wydajności do zastosowania, AMD przygotowało też drugą istotną opcję w Ryzen Master: tryb kompatybilności ze starymi programami, Legacy Compatibility Mode (2). Ten tryb wyłącza połowę rdzeni procesora metodą programową: poleca Windows ich nie używać, dokładnie tak samo, jakbyśmy użyli opcji /numproc=16 w ustawieniach uruchamiania systemu. Polecenie numproc wyłącza logiczne rdzenie w takiej kolejności, w jakiej ustawia je Windows – w przypadku Threadripperów są ponumerowane kolejno tak, że dwa kolejne procesory logiczne (np. 0 i 1) są jednym rdzeniem, ale na innych platformach bywa inaczej. Powstaje maszyna z dwoma domenami NUMA, w której w jednej domenie są wszystkie procesory i połowa pamięci, a w drugiej – druga połowa pamięci i zero procesorów.
Warto zauważyć, że to co innego niż wyłączanie rdzeni w UEFI albo za pomocą opcji Cores Disabled w Ryzen Master: tym sposobem wyłącza się po jednym, dwa lub trzy rdzenie w każdym CCX. Tryb kompatybilności nie wyłącza SMT, wbrew temu, co sugerują niektóre doniesienia z internetu.
W trybie kompatybilności Threadripper 1950X staje się 8-rdzeniowym, 16-wątkowym procesorem, tracimy więc połowę wydajności wielowątkowej. Tryb kompatybilności służy przede wszystkim do uruchamiania programów i gier, które z nieznanych przyczyn w ogóle nie dają się uruchomić na maszynach z bardzo dużą liczbą wątków. Jako przykłady AMD podało między innymi gry Far Cry Primal oraz F1 2016, które w ogóle nie działają, jeśli w systemie jest więcej niż 20 procesorów logicznych (ciekawe, dlaczego akurat 20 i czy ma to jakiś związek z 20-wątkowymi układami Intel Core i7-6950X).
Żeby uprościć konfigurację tych opcji, AMD przygotowało dwa profile: Creator Mode (tryb twórcy, wybrany domyślnie) i Game Mode (tryb gracza). Tryb gracza jednocześnie zmienia tryb dostępu do pamięci na NUMA oraz włącza tryb kompatybilności.
Tryb dostępu do pamięci | Rdzenie/wątki | Konfiguracja rdzeni | Domeny NUMA | |
---|---|---|---|---|
Tryb twórcy Creator Mode | UMA | 16/32 | (4+4)+(4+4) | jedna |
Tryb gracza Game Mode | NUMA | 8/16 | (4+4)+(0+0) | dwie |
Połowa rdzeni wyłączona w UEFI | – | 8/16 | (2+2)+(2+2) | – |
To samo można włączyć samodzielnie bez użycia oprogramowania Ryzen Master: wystarczy przełączyć w UEFI tryb dostępu pamięci na lokalny (NUMA), a w systemie operacyjnym wykonać jako administrator polecenie bcdedit /set numproc 16 (albo numproc 12 w przypadku 1920X).
Pośrednio tryb kompatybilności poprawia też wydajność w niektórych narzędziach niezgodnych z NUMA, ponieważ sprawia, że dostęp do każdego adresu w pamięci jest tak samo szybki dla każdego procesora. Co prawda pamięć jest podzielona na szybszy i wolniejszy obszar, ale dopóki programy nie alokują więcej niż połowę pamięci, ich dane zawsze są w szybkim obszarze, niezależnie od liczby wątków oraz ich podziału pomiędzy procesory.
Wydajność – UMA i NUMA, Game Mode i Creator Mode
Sprawdziliśmy opóźnienie w dostępie do pamięci w obu trybach. Najpierw proces działający na wskazanym przez nas procesorze logicznym rezerwował 200 MB pamięci operacyjnej, a następnie mierzyliśmy, ile czasu zajmie procesowi działającemu na innym wskazanym przez nas procesorze dostęp do tego obszaru. Opóźnienie jest najmniejsze, kiedy maszyna działa w trybie lokalnym (NUMA) i oba procesy działają w tej samej domenie NUMA, na przykład z pamięci zarezerwowanej przez procesor 0 do procesora 7. W Windows pierwsza połowa kolejno ponumerowanych wątków należy do jednej domeny NUMA (w innych systemach lub na innych platformach może być inaczej, na przykład w maszynie z Core i9-7900X działającej pod kontrolą Linuksa logiczne procesory 0 i 10 są tym samym rdzeniem, podobnie 1 i 11 i tak dalej).
W trybie rozproszonym (UMA) adresy są równo rozłożone pomiędzy wszystkie kanały pamięci w procesorze i średnie opóźnienie jest takie samo, niezależnie od tego, z którego procesora do którego. Największe jest opóźnienie w trybie lokalnym do pamięci zarezerwowanej przez procesor w innej domenie NUMA.
A jak to wpływa na wydajność w programach użytkowych i grach?
Większość programów – szczególnie tych operujących na dużych porcjach danych – nie bierze pod uwagę topologii NUMA. Zwłaszcza obróbka wideo i obrazów w programach Adobe jest znacznie wolniejsza w trybie NUMA. Co ciekawe, kompresowanie plików 7-Zipem przebiega nieco szybciej w trybie NUMA, ale podejrzewamy, że podczas kompresji większych paczek plików mniej kosztownym obliczeniowo algorytmem zaobserwowalibyśmy co innego. Z punktu widzenia profesjonalisty wykorzystującego procesor Threadripper do jakichś multimedialnych i obliczeniowych zadań tryb NUMA nie jest opłacalny – jest dużo do stracenia, a niewiele do zyskania.
W grach wydajność jest nieco nieprzewidywalna. Niektóre, na przykład CS:GO i ARMA III, zauważalnie zyskują na włączeniu trybu NUMA. O ile CS:GO jest dość popularny i możemy sobie wyobrazić użytkownika, który po wielu godzinach spędzonych przy swojej stacji roboczej będzie chciał chwilę zagrać, to ARMA jest w naszych testach tylko przykładem dawnej szkoły programowania. Ponieważ nie używa zbyt wielu wątków ani dużej pojemności pamięci, system operacyjny nie ma problemu z przypisaniem wszystkich potrzebnych tej grze zasobów w jednej domenie NUMA. Zadziwiająco Deus Ex: Mankind Divided w DirectX 11 oraz Watch Dogs 2 zauważalnie tracą na wydajności w trybie NUMA. W przypadku Watch Dogs 2 podejrzewamy, że wątki przypisane do drugiej domeny NUMA operują na danych w pamięci w pierwszej domenie, co trwa długo i opóźnia synchronizację między wszystkimi wątkami gry.
Wydajność w trybie gracza
Sprawdziliśmy też wydajność w trybie gracza, w którym nie tylko tryb dostępu do pamięci jest ustawiony na lokalny, ale też dostępna jest tylko połowa wątków i wszystkie są w jednej domenie NUMA.
Prawie wszystkie gry mniej lub bardziej przyspieszają po włączeniu trybu gracza. Wiedźmin i Deus Ex nie wykazują dużej różnicy, za to Watch Dogs traci ponad 15%! Przykład Total War: Warhammer pokazuje, że w XXI wieku nie wystarczy programować wielowątkowo, trzeba to jeszcze robić z głową. Ta gra zwykle zyskuje na użyciu wielowątkowych procesorów, ale nie bierze pod uwagę tego, że zamiast tworzyć więcej i więcej wątków, lepiej utworzyć mniej, jeżeli dzięki temu będą miały zapewnioną lepszą komunikację między sobą oraz z pamięcią operacyjną.
Wydaje nam się, że główne zalety komputera z procesorem Threadripper wymagają użycia domyślnych ustawień: trybu rozproszonego dostępu do pamięci (UMA), w którym przepustowość pamięci jest największa, a opóźnienie – średnie. W przypadku oprogramowania przygotowanego na architektury NUMA (którego z czasem będzie coraz więcej, bo NUMA jest jedynym perspektywicznym sposobem skalowania komputerów do większej liczby wątków i większej pojemności pamięci) lepiej będzie włączyć tryb NUMA i użyć systemu operacyjnego zgodnego z NUMA.
Najwyższą średnią wydajność w grach zapewnia tryb gracza, w którym rezygnujemy z połowy wydajności wielowątkowej.
Wykorzystanie komputera z architekturą NUMA do zadań desktopowych ujawnia kolejny niedostatek w świecie oprogramowania. Zwykle to system operacyjny zarządza przypisywaniem wątków do procesorów logicznych (koligacją) i alokacją pamięci dla programów. Te mogą jednak wpływać na to samodzielnie – program może sam ustawić sobie koligację albo na przykład „przytwierdzić” proces do konkretnego procesora na cały czas jego działania. Nowoczesny OS bierze pod uwagę topologię procesorów i pamięci w komputerze i zarządza procesami w optymalny sposób. Na przykład Windows zna nawet niewidoczny dla oprogramowania podział procesora Ryzen na bloki CCX i nie przypisze czterech wątków jednego programu do rdzeni znajdujących się w różnych CCX, ale pogrupuje je tak, żeby zapewnić im jak najlepszą komunikację i wspólną pulę 8 MB pamięci podręcznej L3. Ale OS dopuszcza, żeby programy same zarządzały przypisywaniem wątków, nawet jeśli robią to w sposób fatalnie pogarszający wydajność. Sytuacja taka jak z Total War: Warhammer nie powinna się zdarzyć – zmniejszenie liczby dostępnych wątków nigdy nie powinno polepszać wydajności. Jak zwykle świat oprogramowania nie jest gotowy na postęp w architekturze PC.
Przełączenie między trybem gracza a twórcy wymaga ponownego uruchomienia komputera (restart płyty głównej – żeby zmienić tryb adresowania pamięci; ponowne załadowanie systemu operacyjnego – żeby zmienić liczbę wykorzystywanych przez niego procesorów). Jest to trochę niepraktyczne, ale dla kogoś, kto wyraźnie oddziela pracę od rozrywki, nie musi być nadmiernie uciążliwe. Tryb twórcy, ustawiony w procesorach Ryzen Threadripper w fabrycznej konfiguracji, jest chyba najlepszym sposobem zaadaptowania NUMA do wykorzystania w desktopie. Według tego trybu ocenialiśmy procesory Threadripper i uważamy, że to w nim pokazują się z najlepszej strony.
Ryzen Threadripper – budowa i chłodzenie procesora
Wielkość procesora i rozmieszczenie otworów mocujących
Procesory Ryzen Threadripper są wielkie i ciężkie. Wielkość jest bezpośrednio związana z podstawką TR4, sklonowaną z serwerowej SP3r2. Musi mieć tak dużo styków, żeby dało się wyprowadzić połączenia do 8-kanałowego interfejsu RAM-u i 128 linii szybkiego I/O (z tego w TR4 podłączone są tylko 4 kanały RAM-u i 64 linie I/O, skonfigurowane jako 64 PCI Express).
W każdym Threadripperze aktywne są te same dwa jądra: lewe górne i prawe dolne (gdy patrzy się zgodnie z orientacją płyty głównej). Teoretycznie AMD mogłoby zmienić to w innej rewizji procesorów, ale nie wyobrażamy sobie, dlaczego miałoby to być pożądane. Poza tym konieczne byłoby nowe podłoże (zielona płytka drukowana, stanowiąca część obudowy procesora).
Oba jądra są ze sobą połączone jednym łączem Infinity Fabric, tak samo jak w procesorach Epyc. Teoretycznie można byłoby zaprojektować nowe podłoże z podwójnym albo potrójnym połączeniem pomiędzy dwoma jądrami. Nie wiemy, dlaczego tego nie zrobiono. Prawdopodobnie potencjalny zysk wydajności byłby niewielki, a koszt energetyczny – duży; a może mechanizmy adresowania łącza Infinity Fabric pozwalają na maksymalnie jedno łącze między dwoma urządzeniami.
Ciężar jest spowodowany między innymi tym, że IHS w procesorach Threadripper jest zauważalnie grubszy niż w innych. Rozsądnie będzie założyć, że jądro ma grubość 0,775 mm – taka jest grubość krzemowych wafli przed obróbką, litografia bardzo nieznacznie ją zmienia. To oznacza, że warstwa interfejsu termicznego (Indalloy) oraz IHS mają w sumie grubość około 4,1 mm.
Grubość IHS i TIM (mm) | Powierzchnia IHS (mm²) | |
---|---|---|
Haswell E/EP | 2,4 | 1612 |
Broadwell E/EP | 2,0 | 1533 |
Skylake X/SP | 2,0 | 1533 |
Ryzen | 2,0 | 1400 |
Threadripper/Epyc | 4,1 | 3463 |
Uwaga: przybliżone wymiary! Nie uwzględniają m.in. zaokrąglonych rogów IHS-a. |
To ma odzwierciedlenie między innymi w różnicy między TCTL (czyli wartością zbliżoną do temperatury jądra) a TDIE (czyli wartością wykorzystywaną przez płytę główną lub serwer do sterowania prędkością wentylatorów). W Ryzenach 7 1700X i 1800X AMD dodaje 20 do TCTL, a większy offset w Threadripperach odpowiada większej impedancji termicznej IHS-a.
Z drugiej strony grubszy IHS powoduje rozproszenie ciepła na większą powierzchnię i pozwala zadowalająco schłodzić procesor, mimo że podstawa schładzacza nie pokrywa powierzchni bezpośrednio nad jądrami CPU. Przełączanie ilustracji poniżej pozwala zobaczyć, jaką powierzchnię pokrywają podstawy popularnych układów chłodzenia: typowego schładzacza powietrznego z ciepłowodami stykającymi się z procesorem, układu chłodzenia cieczą AIO produkowanego przez Aseteka (a sprzedawanego przez Corsaira, Thermaltake'a, NZXT i innych), popularnego bloku wodnego oraz dwóch bloków wodnych przygotowanych specjalnie dla Threadripperów.
Testy procesorów Ryzen Threadripper przeprowadzaliśmy z użyciem układu chłodzenia AIO Corsair Hydro H110i. Jego podstawa, wyjąwszy zewnętrzną część, pełną śrub, pokrywa stosunkowo małą część IHS-a. Dzięki grubości rozpraszacza ciepła nie ma większego znaczenia, czy wewnętrzna struktura bloku wodnego kieruje ciecz dokładnie nad jądra CPU. Na przykład blok EK Supremacy Evo Threadripper Edition ma większą podstawę niż wersja przeznaczona do innych procesorów, ale wewnętrzne kanały mają takie same wymiary jak w zwykłym bloku. Ważna jest jednak całkowita powierzchnia styku między IHS-em a układem chłodzenia: zawsze im większa, tym lepiej. Oczywiście, można też powiększyć wszystko: i podstawę, i wewnętrzny prześwit bloku, tak jak w bloku wodnym XSPC Raystorm Neo.
Paradoksalnie trudniej zdobyć system mocowania do podstawki TR4 niż schładzacz o szerokiej podstawie. Nawet byle jaki schładzacz pozwoli przynajmniej uruchomić komputer z Threadripperem, ale tylko jeśli da się go zamontować. Spośród układów chłodzenia powietrzem tylko te o dużej podstawie, specjalnie przygotowane do TR4, mają odpowiednie mocowanie. Spośród układów chłodzenia cieczą te o mocowaniu w stylu Aseteka można zamontować z użyciem zapinki dołączonej do procesora. Jeśli ktoś zechce wykonać własny system mocowania, na przykład do starszego bloku wodnego, będzie mógł wykorzystać wymiary z ilustracji.
Epyc w przebraniu czy nie do końca?
Jądra są wstępnie sortowane przed zamontowaniem, a nawet przed pocięciem krzemowego wafla. Po inspekcji wizualnej, która pozwala wykryć duże widoczne defekty, przeprowadza się testy elektryczne za pomocą próbnika ze sprężynującymi stykami, dociskanego do pól kontaktowych (mikrowypustów) na poszczególnych jądrach. Można w ten sposób sprawdzić, czy układ w ogóle działa. Nowoczesne układy AMD (również Nvidii) da się zapewne posortować znacznie dokładniej jeszcze na waflu – pomagają w tym wbudowane sensory, które później służą do sterowania taktowaniem i zasilaniem (technika SenseMI).
Ponieważ na długo przed zamontowaniem jąder w obudowach wiadomo już, które są sprawne i nadają się do wykorzystania jako Ryzen Threadripper, sprawne jądra montuje się tylko tam, gdzie są potrzebne. Dwa pozostałe to – jak powiedzieli nam inżynierowie AMD podczas prezentacji Threadripperów w Los Angeles – „dummy dies”, ślepe jądra, zamontowane dla stabilności mechanicznej i termicznej całej obudowy. Wiemy na pewno, że nie są podłączone do prądu ani do pól kontaktowych na spodzie obudowy.
Wbrew doniesieniom z internetu nie określono, czy to są puste kawałki krzemu, które nigdy nie przeszły litografii, czy niesprawne jądra, które w innym przypadku zostałyby wyrzucone. Bez destruktywnej analizy procesora nie możemy tego sprawdzić, ale podejrzewamy, że chodzi o niesprawne jądra. Jeśli do układów Threadripper trafia poniżej 5% wszystkich sprawnych jąder, to z całą pewnością AMD dysponuje taką samą liczbą odrzuconych.
Pięć procent najlepszych jąder Zeppelin?
Słynna uwaga o selekcjonowaniu jąder do procesorów Threadripper dotyczy jakości jąder, a nie wielkości produkcji. Spośród wszystkich sprawnych jąder najlepsze 5% jest dość dobre, żeby trafić do procesora Threadripper – ale to nie znaczy, że całe 5% śmietanki zostaje wykorzystane na Threadrippery.
Podsystem PCI-E
Ryzen Threadripper ma w sumie 64 linie PCI Express, z których 4 są skonfigurowane jako połączenie z mostkiem południowym. To oznacza, że do dyspozycji użytkownika jest 60 linii PCI-E podłączonych do procesora. Oczywiście, można z nich korzystać nie zupełnie dowolnie, ale w ramach ograniczeń związanych z budową płyty głównej. Chipset jest „obowiązkowy” na platformie X399 – nie można z niego zrezygnować, jak w serwerach z Epyc. Aż 60 liniami PCI Express można się w pierwszej chwili zachwycić, ale po namyśle zauważamy, że projektanci desktopowych płyt głównych mają niewiele rozsądnych konfiguracji PCI-E do wyboru.
Zobaczmy, co można podłączyć do przykładowej płyty głównej: Asus Zenith Extreme. Potem opiszemy techniczne ograniczenia dotyczące wszystkich płyt.
Cztery główne sloty PCI Express mogą posłużyć do podłączenia kart graficznych. Dwa z nich mają szerokość ×16. Dwa następne mają szerokość ×8 – to w sumie rezerwuje 48 linii PCI-E. Dwanaście pozostałych jest wykorzystanych w postaci trzech złączy M.2 z PCI-E ×4, w których można zamontować SSD, inne urządzenia ze złączem M.2 (tylko klucz M) albo przejściówki z M.2 na U.2 lub zewnętrzne sloty PCI-E. Ostatni długi slot może pracować z szerokością ×8 (wtedy złącze U.2 jest nieaktywne) albo ×4 (wtedy można korzystać z U.2).
Pozostałe urządzenia wymagające dużej przepustowości są podłączone do kontrolera PCI-E w mostku południowym. Kontroler LAN (Intel I211AT, do 1 Gb/s) zużywa jedną linię, kontroler USB 3.1 Gen 2 (ASMedia ASM3142) – dwie, kontroler sieci WiFi (Qualcomm Atheros QCA6174 i QCA9500) – dwie. Dwa krótkie sloty PCI Express są podłączone do mostka południowego i zawsze są aktywne.
Częścią wyposażenia płyty Zenith Extreme jest karta sieciowa ROG Areion 10 Gb/s ze złączem PCI-E ×4. Maksymalna teoretyczna przepustowość sieci 10 Gb/s to około 1,25 GB/s, czyli nieco więcej, niż zapewnia PCI-E 3.0 ×1 lub PCI-E 2.0 ×2. Podłączenie jej do slotu PCI-E 2.0 ×4 z mostka południowego nie powinno ograniczać wydajności sieci.
Pozostali producenci płyt głównych zastosowali bardzo podobny układ PCI-E. Na płytach ASRock Fatal1ty X399 Professional Gaming, Gigabyte X399 Aorus Gaming 7 oraz MSI X399 Gaming Pro Carbon w taki sam sposób przypisano 60 linii z procesora: 48 linii – do złączy PCI-E (×16/×8/×16/×8), pozostałych 12 – do trzech M.2. Główne różnice są w kontrolerach sieci:
- ASRock ma kontroler „szybkiego” LAN-u (10 Gb/s) i dwa kontrolery zwykłego LAN-u (1 Gb/s, Intel) oraz kontroler WiFi 802.11ac – wszystko wbudowane w płytę.
- Asus ma jeden kontroler zwykłego LAN-u i kontroler WiFi 802.11ad (WiGig) wbudowane w płytę oraz kontroler szybkiego LAN-u na oddzielnej karcie.
- Gigabyte ma jeden kontroler zwykłego LAN-u (Killer E2500) i WiFi 802.11ac wbudowane w płytę.
- MSI ma jeden kontroler zwykłego LAN-u wbudowany w płytę oraz kontroler WiFi 802.11ac na oddzielnej karcie.
W takim podsystemie PCI-E większości użytkowników niczego nie będzie brakować, ale na platformę X399 z Threadripperem mogą się skusić nietypowi użytkownicy, którzy mogą mieć nietypowe wymagania. Niestety, istniejące płyty X399 mają pewne ograniczenia wspólne ze starszymi desktopowymi płytami i duża liczba linii PCI-E ich nie znosi.
Rozdzielanie portów PCI-E ×16
Pierwsze ograniczenie dotyczy rozdzielania portów PCI-E. Urządzenia PCI-E podczas uruchamiania negocjują między sobą szerokość łącza. Znakomita większość kontrolerów i urządzeń pozwala wynegocjować wszystkie pośrednie szerokości, czyli w slocie ×16 można zamontować urządzenia ×8, ×4 i ×1. Osobną funkcją jest rozdzielanie portów PCI-E, czyli możliwość wykorzystania łącza ×16 na przykład jako dwóch łączy ×8. Kontroler PCI-E w Threadripperze umożliwia rozdzielanie na każdą szerokość: ×1, ×2, ×4, ×8 i ×16. To nie znaczy, że można podłączyć 60 urządzeń łączami PCI-E ×1 bez dodatkowych komponentów. Threadripper generuje bowiem tylko 8 sygnałów zegarowych PCI-E, z których jeden jest wykorzystywany na łącze ×4 z mostkiem południowym. To znaczy, że bez użycia dodatkowych generatorów zegara do Threadrippera można podłączyć siedem urządzeń PCI-E – dokładnie tyle, ile udostępniają płyty główne (cztery karty graficzne i trzy SSD).
Threadripper | Skylake X (Core i9 LGA2066) | Summit Ridge (Ryzen AM4) | Kaby Lake (Core LGA1151) | |
---|---|---|---|---|
Linie PCI-E | 64 | 48 | 24 | 20 |
Linie PCI-E dostępne dla użytkownika | 60 | 44 | 20 | 16 |
Maks. liczba urządzeń | 7 | 10 | 3 | 3 |
Maks. liczba urządzeń z generatorami zegara | 60 | 11 | 3 | 3 |
Możliwość rozdzielania PCI-E (maksymalna konfiguracja) | 60 ×1 | ×8 + 9 ×4 | ×8 + ×8 + ×4 | ×8 + ×4 + ×4 |
Żeby nie było zbyt prosto, wymienione parametry oznaczają ograniczenia procesorów, ale płyty główne zwykle nie udostępniają wszystkich tych możliwości! Na przykład zarówno Threadripper, jak i Skylake X umożliwiają rozdzielenie pierwszych 16 linii na cztery łącza o szerokości ×4, podczas gdy procesory Ryzen do podstawki AM4 oraz procesory Intela do LGA1151 nie mają takiej możliwości. Jednak taka funkcja musi być obsługiwana przez płytę główną, a o ile wiemy, nie zapewnia tego żadna z płyt LGA2066 ani TR4. To znaczy, że nie da się na przykład użyć risera PCI-E rozdzielającego port ×16 na dwa porty ×8, a tym bardziej na większą liczbę portów ×4. W modelu Zenith Extreme nie rozdzielimy żadnego portu w żadnej konfiguracji – można podłączyć siedem urządzeń i kropka.
Na wybranych płytach głównych do procesorów Skylake X można zamontować cztery urządzenia w jednym porcie PCI-E ×16, ale nie jest to uniwersalna funkcja. Działa wyłącznie w razie użycia czterech nośników SSD; w dodatku nie są one widoczne dla każdego systemu operacyjnego jako urządzenia PCI-E, ale muszą być skonfigurowane w Macierz RAID zarządzaną przez oprogramowanie Intela.
Zwykle wymienione ograniczenia nie będą tu miały żadnego znaczenia, ale ktoś, kto planuje zbudować do kopania kryptowalut jakąś maszynę z 60 akceleratorami, musi się rozejrzeć za switchami PCI-E podobnymi do układów PLX (dziś Broadcom) czy nForce 200, kiedyś stosowanych w konfiguracjach SLI. Z takimi switchami można budować w zasadzie dowolne konfiguracje na dowolnej platformie, ale są one znacznie droższe, większe i konsumują więcej energii, niż prosty generator sygnału zegarowego.
RAID z nośników SSD podłączonych do procesora
W okresie po targach Computex w prasie komputerowej gorącym tematem stała się możliwość utworzenia macierzy RAID z nośników SSD podłączonych do procesora. Tylko w prasie, bo w praktyce jest to niemożliwe albo oficjalnie nieobsługiwane.
Na platformie Skylake X (nie Kaby Lake X) Intel udostępnia funkcję VROC – Virtual Raid On CPU. To funkcja programowa, realizowana przez rozszerzenie Intela do UEFI (E w tym skrócie oznacza Extensible, czyli rozszerzalny – innymi rozszerzeniami UEFI są na przykład sterowniki do karty sieciowej i program do aktualizowania UEFI). Ponieważ nie jest realizowana przez system operacyjny, system można uruchamiać z macierzy VROC (o ile istnieją odpowiednie sterowniki). Do uruchomienia jakiejkolwiek konfiguracji VROC potrzeba sprzętowego klucza licencyjnego, który instaluje się w niewielkim złączu dostępnym na większości płyt LGA2066. W praktyce VROC jeszcze nie jest dostępny. Jak twierdzi dział obsługi technicznej Intela, VROC działa wyłącznie w konfiguracjach z serwerowymi chipsetami i nie wiadomo, kiedy będzie obsługiwany na platformie X299.
AMD nie planuje udostępniać niezależnych od OS-u macierzy RAID z nośników podłączonych do procesora. AKTUALIZACJA: AMD zapowiedziało, że za mniej więcej miesiąc platforma X399 będzie umożliwiała zbudowanie RAID-u 0, 1 i 1+0 z nośników NVMe. Więcej informacji znajdziecie w jednej z naszych aktualności: „AMD przedstawia Ryzen Threadripper 1900X – 16 wątków i 60 linii PCI-E za 550 dolarów”.
Użytkownicy procesorów Threadripper i Skylake X, którzy potrzebują RAID-u z SSD NVMe już teraz, muszą uruchamiać system z innego nośnika danych i użyć programowych rozwiązań RAID (na przykład ZFS w systemach: *nix, BSD i Mac OS albo Storage Spaces w Windows). Macierze RAID z dysków SATA są dostępne na obu platformach.
Do RAID-u z nośników SSD niebawem wrócimy w innym artykule.
Ciąg dalszy nastąpi!
Ten artykuł zostanie zaktualizowany o dalsze szczegóły budowy i obserwacje z użytkowania maszyny z procesorem Ryzen Threadripper. W następnej aktualizacji napiszemy o tym, jak procesory Skylake X mają się do architektur UMA i NUMA, a także opiszemy krótko płytę Asus Zenith Extreme.