Eksperymenty przeprowadzone z procesorami Ryzen 3000 pozwoliły nam zaobserwować kilka cech mikroarchitektury Zen 2, które nie zostały opisane wprost przez AMD. Nasze obserwacje wynikają głównie z kilku mikrobenchmarków, czyli testów wykorzystujących bardzo krótkie i jednolite zadania, pozwalających doprowadzić do maksymalnego wykorzystania specyficznych zasobów rdzenia x86.
Spis treści
Zen 2 – spostrzeżenia architekturalne
Testy przeprowadziliśmy pod kontrolą Linuxa – Ubuntu 18.04 LTS z kernelem 4.18. Nieznany bliżej problem powoduje, że nowe dystrybucje Linuxa (sprawdziliśmy Ubuntu 18.10 i 19.04, Debian 9.9 i Arch 2019.06.01) nie uruchamiają się na maszynach z procesorem Ryzen Matisse. Problem został zauważony w tygodniu poprzedzającym naszą recenzję również przez innych testerów. Redakcja serwisu Phoronix spekuluje, że chodzi o nieoczekiwane zachowanie sprzętowego generatora liczb losowych, i że problem może być wkrótce naprawiony przez aktualizację komponentu Linuxa systemd lub mikrokodu AMD. Użytkownicy starszych systemów mogą swobodnie zaktualizować kernel do najnowszej wersji (sprawdziliśmy 5.1.15 i 5.2.rc7) nie narażając się na problemy.
Dostęp do pamięci podręcznej L2
Test opóźnienia w dostępie do pamięci podręcznej pokazuje zachowanie niespotykane wcześniej w procesorach desktopowych.
Zwróćcie uwagę na skalę logarytmiczną na obu osiach. Wszystkie wykresy utrzymują się w pewnym zakresie rozmiaru pobieranych danych na mniej więcej równym poziomie, powyżej pewnego rozmiaru przeskakują nagle na wyższy poziom i tak dalej. Skoki na wykresie odpowiadają z grubsza pojemności kolejnych poziomów pamięci podręcznej: do 32 kB pobranie danych trwa poniżej 1 nanosekundy (czyli 4 cykle przy taktowaniu 4100 MHz) – to odpowiada pobraniu z bardzo szybkiej pamięci L1D, która we wszystkich trzech zaprezentowanych procesorach ma pojemność 32 kB. Skylake/Coffee Lake ma kolejny skok opóźnienia powyżej 256 kB, czyli pojemności pamięci L2. W Zen i Zen 2 pamięć L2 ma pojemność 512 kB, więc dopiero pobranie danych powyżej tego rozmiaru wiąże się z większym opóźnieniem.
Naszą uwagę przyciągnęła granica między pojemnością L1D a pojemnością L2 w procesorze Zen 2. Podczas gdy w Zen i Skylake wzrost opóźnienia jest nagły, opóźnienie w Zen 2 narasta stopniowo i dąży do ok. 3 ns. Skoro pamięć podręczna może mieć tylko jedno, stałe opóźnienie dla każdego adresu, to o co chodzi? W Zen 2 wiele porcji danych większych niż L1D było pobieranych z opóźnieniem średnio mniejszym, niż opóźnienie w dostępie do L2. To znaczy, że przy pobieraniu 64-kilobajtowej porcji danych jej część została odnaleziona w L1D, część w L2, a średnie opóźnienie wyszło niższe, niż opóźnienie do L2. Ponieważ adresy były losowe, nie mógł mieć na to wpływu mechanizm pobierania danych z wyprzedzeniem. Wszystko wskazuje na to, że inżynierowie AMD zmienili w Zen 2 reguły rządzące zapełnianiem pamięci podręcznej L1D.
Pamięci podręczne są zarządzane sprzętowo – oprogramowanie „widzi” tylko rejestry procesora i jednolitą przestrzeń pamięci, a procesor sam decyduje, która część tej pamięci będzie przechowywana chwilowo w szybkiej, lokalnej pamięci podręcznej. Typowa i najprostsza reguła to LRU – least recently used – czyli wyrzucanie z pamięci tych linii, które najdawniej były potrzebne. Jeśli potrzeba pobrać nowe dane z pamięci, a pamięć podręczna jest zapełniona, to zwalnia się miejsce przez wyrzucenie tych danych, które od dawna nie były używane. Wszystko wskazuje na to, że Zen 2 śledzi trend dostępów do pamięci i wykrywa sytuacje, w których LRU skutkuje ciągłymi „pudłami”, czyli potrzebne dane regularnie nie są odnajdywane w pamięci podręcznej. W takich przypadkach reguła zarządzania pamięcią L1D jest tymczasowo zmieniana. Znanych jest wiele reguł, które mogą dawać podobne skutki, szczególnie losowe wyrzucanie (zwalnia się miejsce przez wyrzucenie losowo wybranej linii – używane np. w rdzeniach ARM Cortex R5) lub MRU (most recently used – wyrzuca się elementy, który ostatnio były użyte, zakładając że były potrzebne tylko raz).
Podobne zachowanie zaobserwowała redakcja serwisu Anandtech w procesorach Samsung M4 oraz ARM Cortex A75 – pamięć L1D w Zen 2 ma zatem coś wspólnego z tymi architekturami mobilnych procesorów. Reprezentanci AMD nie wspominali nic o regułach zarządzających L1D; być może dowiemy się więcej na konferencji Hot Chips lub gdy AMD zaktualizuje poradnik optymalizacji programowania dla procesorów Zen 2.
Za bardzo po polsku bylo?
Za bardzo po polsku bylo?
https://sjp.pwn.pl/szukaj/architektura.html
Architektura:
1. «sztuka projektowania, wznoszenia i artystycznego kształtowania budowli»
2. zob. architektonika w zn. 1.
3. «wydział na wyższej uczelni poświęcony studiom z tego zakresu»
4. «struktura logiczna komputera lub systemu komputerowego»
Threadrippery bez trybu Game Mode (czyli bez wyłączenia CCX-ów) generalnie w grach zawodziły. Tutaj może być ciekawie
Nie macie może jakiegoś TR aby uzupełnić wyniki?
Mamy, uzupełnimy niebawem™.
W kilku zachodnich recenzjach pojawiła się informacja o wolnym zapisie do pamięci w przypadku procków zbudowanych z jednego CCD. Prockek z dwoma CCD czyli 3900 na tę przypadłość nie cierpi. Chodzi o szerokość magistrali miedzy CCD a CioD ktora wg AMD przesyła połowę mniej danych przy zapisie w porównaniu do odczytu. Postarajcie się zgłębić temat przy kolejnym nerdowym artykule proszę. Wykresy testów memory z AIDA64 wyglądają dziwnie dla zapisu przy prockach z jednym CCD.