artykuły

Zen 2 – dodatkowe spostrzeżenia architekturalne

44
9 lipca 2019, 17:33 Mateusz Brzostek

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.

Strona:
komisarzZobacz profil
Poziom ostrzeżenia: 0%
komisarz2019.07.09, 18:34
-24#1
'dodatkowe spostrzeżenia architekturalne' - architektoniczne wam nie pasowalo?
Za bardzo po polsku bylo?
Edytowane przez autora (2019.07.09, 18:35)
KaroloBCZobacz profil
Poziom ostrzeżenia: 0%
KaroloBC2019.07.09, 19:19
27#2
Ciekawy artykuł ;)
supervisorZobacz profil
Poziom ostrzeżenia: 0%
supervisor2019.07.09, 19:38
17#3
komisarz @ 2019.07.09 18:34  Post: 1210533
'dodatkowe spostrzeżenia architekturalne' - architektoniczne wam nie pasowalo?
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»
Edytowane przez autora (2019.07.09, 19:39)
Atak_SnajperaZobacz profil
Poziom ostrzeżenia: 0%
Atak_Snajpera2019.07.09, 20:25
21#4
Aja lubię takie nerdowskie artykuły.
BogieZobacz profil
Poziom ostrzeżenia: 0%
Bogie2019.07.09, 20:46
20#5
W sumie artykuł może wpłynąć na decyzje zakupowe - jak ktoś potrzebuje nie więcej niż 8 rdzeni, w przypadku Zen1 nie był sensu pchać się w większą liczbę niż potrzebna - zabawa z przerzucaniem wątków między CCX bywała męcząca i nie zawsze dawała rezultaty. W przypadku ZEN2 większa ilość rdzeni zawsze powoduje wzrost wydajności, niezależnie od ilości CCX, a to bardzo istotna wiadomość. Brawo inżynierowie AMD, procesory serwerowe dostaną znaczącego 'kopa' w sytuacji wykorzystania mniejszej liczby wątków, i wygląda na to, że mogą być ciekawą alternatywą dla bardzo bogatych entuzjastów w każdych zastosowaniach, w tym nawet w grach.
Threadrippery bez trybu Game Mode (czyli bez wyłączenia CCX-ów) generalnie w grach zawodziły. Tutaj może być ciekawie ;)
znafcaZobacz profil
Poziom ostrzeżenia: 33%
znafca2019.07.09, 20:52
13#6
Najciekawsza czesc artykulu o premierze ryzen 3k.
AmitozaZobacz profil
Poziom ostrzeżenia: 0%
Amitoza2019.07.09, 21:08
18#7
Widać, ze infinity fabric mocno przyspieszyło/zredukowano opóźnienia. Na pewno zaowocuje to w serwerach, gdzie komunikacja miedzy osobnymi kawałkami krzemu była prawie 2x wolniejsza niż miedzy ccxami - teraz wygląda na to, ze nie będzie to miało różnicy i będzie szybsze nawet od komunikacji pomiedzy rdzeniami w roznych ccx w zen1. Co więcej wygląda na to, ze nie będzie wolniej niż mesh w skylake-x, gdzie Komunikacja była 2x wolniejsza niż na magistrali pierscieniowej.

Nie macie może jakiegoś TR aby uzupełnić wyniki?
Edytowane przez autora (2019.07.09, 21:19)
mbrzostekZobacz profil
Poziom ostrzeżenia: 0%
Autor publikacjimbrzostek2019.07.09, 21:32
Amitoza @ 2019.07.09 21:08  Post: 1210556
Nie macie może jakiegoś TR aby uzupełnić wyniki?

Mamy, uzupełnimy niebawem™.
PutoutZobacz profil
Poziom ostrzeżenia: 0%
Putout2019.07.09, 22:50
15#9
Dobra robota. Mało takich artykułów w polskim internecie
DrookashZobacz profil
Poziom ostrzeżenia: 0%
Drookash2019.07.09, 22:55
13#10
I takie rzeczy czyta się najlepiej !
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.
Edytowane przez autora (2019.07.09, 22:56)
Zaloguj się, by móc komentować
1