Ar verta atsinaujinti į AGESA 1.0.0.4 ir ar „ASUS ROG Crosshair VIII Impact“ yra inžinerinis šedevras?
Spartos testai (gamykliniai BIOS nustatymai)
Gamykliškai su abiem BIOS’ais (1001 ir 1201) „ROG Crosshair VIII Impact“ turi standartines PPT, TDC bei EDC vertes, kurios atitinkamai lygios 88 W, 60 A bei 90 A. Priminsime, kad gamykliškai „ASRock X570 Steel Legend“ pagrindinėje plokštėje PBO funkcija jau yra iškart dalinai įjungta, todėl didesnė dalis geriausių multicore rezultatų priklauso būtent šiai pagrindinei plokštei.
„ROG Crosshair VIII Impact“ pagrindinei plokštei pavyksta užfiksuoti geriausius vidurkius „Winrar“ ir „7-Zip“ testuose, taip pat „POV-Ray“ (vieno branduolio) teste. Pralaidumo skirtumas „Winrar“ teste nėra didelis (kiek daugiau nei +100 MB/s), tačiau „7-Zip“ teste „Impact“ išsiveržė į priekį labiau, ją nuo „Steel Legend“ skiria beveik 600 MIPS, kas atrodo neįprastai daug įvertinus, jog naudojame tą pačią operatyviąją atmintį. Į akis labiau krenta apie pusę minutės greitesnis darbas už „Formula“ modeliuojant „Gooseberry“ sceną, tačiau skirtumas nėra reikšmingas įvertinus, jog visas rendering’as trunka 30 minučių. Sistema su „Impact“ visais testavimo scenarijais naudoja mažiausiai elektros energijos, kadangi pagrindinė plokštė turi mažiausiai vCore fazių. Tai leidžia pasiekti geriausią VRM’o efektyvumą naudojant pakankamai nedaug energijos naudojantį „Ryzen 7 3700X“. Lyginant su „Formula“ skirtumas kinta nuo 5 W („Cinebench r20“ multicore) iki 14 W („POV-Ray“ single core).
ASUS ROG Crosshair VIII Formula (BIOS 1001/ AGESA 1.0.0.3ABBA) + G.SKILL Trident Z 2x 8 GB (3600 MHz CL16-16-16-36) | ASRock X570 Steel Legend (BIOS 1.90/ AGESA 1.0.0.3ABBA) + G.SKILL Trident Z 2x 8 GB (3600 MHz CL16-16-16-36) | ASUS ROG Crosshair VIII Impact (BIOS 1001/ AGESA 1.0.0.3ABBA) + G.SKILL (Trident Z 2x 8 GB 3600 MHz CL16-16-16-36) | |||||||
Maksimalus UCLK: FCLK santykis | 1800:1800 MHz | 1733:1733 MHz | 1800:1800 MHz |
||||||
Testas |
1-as bandymas | 2-as bandymas |
3-ias bandymas | 1-as bandymas | 2-as bandymas | 3-ias bandymas | 1-as bandymas | 2-as bandymas | 3-ias bandymas |
Cinebench r20 (single core) | 511 | 511 | 512 | 491 | 495 | 494 | 511 | 508 | 507 |
Vidurkis | 511 | 493 |
509 |
||||||
Tipinės el. sąnaudos |
~105 W | ~105 W | ~93 W | ||||||
Cinebench r20 (multi core) | 4778 | 4784 | 4784 | 4926 | 4934 | 4915 | 4827 | 4845 | 4820 |
Vidurkis | 4782 | 4925 | 4831 | ||||||
Tipinės el. sąnaudos |
~160 W | ~195 W | ~155 W | ||||||
Corona rendering (multicore) | 01:49 | 01:48 | 01:49 | 01:46 | 01:46 | 01:46 | 01:48 | 01:47 | 01:47 |
Vidurkis | 01:49 | 01:46 | 01:47 | ||||||
Gooseberry rendering (multicore) | 30:40 | 30:39 | 30:31 | 29:38 | 29:32 | 29:36 | 30:07 | 30:00 | 30:03 |
Vidurkis | 30:37 | 29:35 | 30:03 | ||||||
wPrime 32M (4 threads) | 7,548 sec | 7,531 sec | 7,563 sec | 7,596 sec | 7,528 sec | 7,545 sec | 7,608 sec | 7,611 sec | 7,548 sec |
Vidurkis | 7,547 sec | 7,556 sec | 7,589 sec | ||||||
POV-Ray (single core) | 544,05 sec | 543,20 sec | 543,51 sec | 550,94 sec | 548,18 sec | 545,90 sec | 542,23 sec | 542,13 sec | 544,62 sec |
Vidurkis | 543,59 sec | 548,34 sec | 542,99 sec | ||||||
Tipinės el. sąnaudos | ~107 W | ~105 W | ~93 W | ||||||
POV-Ray (multicore) | 62,37 sec | 61,79 sec | 61,85 sec | 59,83 sec | 59,78 sec | 59,68 sec | 61,01 sec | 60,85 sec | 61,09 sec |
Vidurkis | 62 sec | 59, 76 sec | 60, 98 sec | ||||||
Tipinės el. sąnaudos | ~161 W | ~190 W | ~155 W | ||||||
WinRAR 5.71 x64 (multicore) | 23 709 MB/s | 23 582 MB/s | 23 516 MB/s | 23 615 MB/s | 23 693 MB/s | 23 586 MB/s | 23 795 MB/s | 23 723 MB/s | 23 732 MB/s |
Vidurkis | 23 602 MB/s | 23 631 MB/s |
23 750 MB/s |
||||||
7-Zip 19.00 x64 (multicore) | 77 047 MIPS | 77 307 MIPS | 77 307 MIPS | 77 596 MIPS | 77 596 MIPS | 77 222 MIPS | 77 891 MB/s | 78 099 MB/s | 78 192 MB/s |
Vidurkis | 77 220 MIPS |
77 471 MIPS |
78 061 MIPS |
||||||
Far Cry 5 (1080p/+GTX 1080 Ti) | avg 104 fps
1 % 77 fps 0,1 % 60 fps |
avg 103 fps
1 % 76 fps 0,1 % 45 fps |
avg 104 fps
1 % 75 fps 0,1 % 50 fps |
avg 105 fps
1 % 77 fps 0,1 % 62 fps |
avg 104 fps
1 % 77 fps 0,1 % 47 fps |
avg 102 fps
1 % 73 fps 0,1 % 47 fps |
avg 101 fps
1 % 76 fps 0,1 % 61 fps |
avg 100 fps
1 % 76 fps 0,1 % 49 fps |
avg 102 fps
1 % 75 fps 0,1 % 50 fps |
Vidurkis |
avg 103,7 fps
avg 1 % 76 fps avg 0,1 % 51,7 fps |
avg 103,7 fps
avg 1 % 75,7 fps avg 0,1 % 52 fps |
avg 101 fps
avg 1 % 75,7 fps avg 0,1 % 53,3 fps |
Tai norint kuo greitesnio užsikrovimo geriau naujesnis mikrokodas, bet minimaliai sparta didesnė su senesniu mikrokodu. Visko negali turėti iš karto 😀
Man regis, kad atvejai, kuomet naujinti UEFI neverta, yra tokie reti, jog galima sakyti, kad visada verta 🙂
Siaip jeigu jau labai gilintis i detales, tai AGESA nera mikrokodas, bent jau ne toks mikrokodas, kuri visi suvokia istoriskai. AGESA yra AMD binariku package’as, reikalingas paupdeitint integruotus mikrokontrolerius. Turbut ne visi zinot, kad visi Ryzen AMD CPU eina dar su atskiru ARM’u integruotu – auksciausios privilegijos CPU. Jis irgi turi tureti savo „OS“.
Tas „tikras“ mikrokodas tai yra tik dalis, kuri atsigula jau grynai i CPU core’us, ir paupdeitina ta layer’i, kuris interpretuoja x86-64 instrukcijas ir skaldo jas i mikrooperacijas. Tai va sitas tiny miniatiurinis layer’iukas is tiesu yra tas klasikinis mikrokodas.
Ai, dar verta pamineti, kad modernios OS (Linux, Windows 10) uzsikrovimo metu visada pasitikrina, koks yra esamas mikrokodas, ir jeigu jos savyke su updeitais turi naujesni, run-time’e uzkrauna naujesni. Bet jis buna tik run-time, iki sekancio reboot. Jeigu yra du PC, su skirtingais AGESA, tai teoriskai imanoma, kad uzsikrovus PC iki galo su Win/Linux, jie naudos ta pati CPU mikrokoda, kuris pareis is OS updeitu konteinerio (bet reikia patikrint praktiskai, niekad to neziurejau pats).
As asmeniskai visad viskam surasau naujausius firmware’us, per daug nesuku galvos. Absoliuciai daugumoj atveju jie pataiso daugiau, nei sulauzo. Pavasari, ties LTS ubuntu-base isleidimu, pasidarau viena „inventorizacijos diena“, kai atnaujinu UEFI, SSD FW ir pan. Jeigu buna aisku updeitai 🙂 Is kitos puses, jeigu viskas veikia stabiliai, tai atnaujint prasme nebent del security fix’u tik lieka.
Kaip visada labai gera šviečiamoji informacija, bet visko nesuprantu 😀 ir tuos AGESA atnaujinimus vis tiek vadinsiu mikrokodais, nes geriau net nelabai ką ir sugalvoju.
Tai viskas OK su tuo vadinimu. Jis nera neteisingas, nes mikrokodu paprastai vadinamas software layer’is, kuris kazkieno atzvilgiu veikia kaip HW. Paprasciausiai seniau, tai buvo tik ta mazyte dalis. Dabar tas layeris isaugo smarkiai, nes modernus CPU is tiesu jau ne CPU, o SoC, su daug integruotu dalyku, kam reikia binary firmware’u.
As cia ka rasau, tai daugiau del idomumo, ar niuanso kokio tai mazo.
Kaip jau seniau esu sakę, paskaitai tavo postą ir protingesnis pasidarai nepaisant jei visko ir nesupranti 🙂
As esu tik casual’as kas del tu visu low level dalyku… Jei norit tikrai protingu minciu, rekomenduoju LINUX arba Coreboot mailing listus paskaityti 🙂 Jeigu labiau is mainstream, tai HotChips konfos turinys kartais neblogas buna. As tai tik komentuoju i tema kas man ant liezuvio tuo metu buna 😀
O kalbant apie mail listus, neseniai ten buvo idomus Torvaldso pasisakymas apie threadu sinchronizacija ir OS schedulerius. Vienas gamedev’as bande irodyt, kad linux blogai veikia, bet paaiskejo, kad jo spinlock’ai blogai padaryti is tiesu. Kalba eina apie Rage 2 koda.
Tai ka jus norit, kad ant Ryzen gerai tie zaidimai varytu, jeigu ten net sinchrozinacija gaidine buna softe, mazdaug ant i7 2600K patestavo, veikia ir davai 😀
Anyway, cia nukrypau jau nuo temos…
Įdomu pasidarė apie ta gaidinę sinchronizaciją. Moar pls.
Ten daug detaliu, tai tik saltinius imesiu, kam idomu.
Originalus gamedev’o post’as:
https://probablydance.com/2019/12/30/measuring-mutexes-spinlocks-and-how-bad-the-linux-scheduler-really-is/
Torvalds’o laisku pradzia:
https://www.realworldtech.com/forum/?threadid=189711&curpostid=189723
TL;DR: gamedev’as nelabai suprato, kaip veikia scheduler’is, jo bench’inimas buvo netikslus, o spinlock’o implementacija prasta.
O mes ka galim pasiimti is visos sios istorijos, kad softo optimizacijos yra labai svarbu. Tiksliau net neoptimizacijos, o teisingai parasytas kodas. Ypac AMD atveju, kai yra daug thread’u ir didesnis nei Intel RAM latency.
Dėkui. Įdomus pasiskaitymas
kaip suprantu kuo daugiau thread’u iš „suklijuotų“ AMD lustų, tuo sunkiau tie thriedai susikalba ir nepasidalina tarpusavy, kas kokį Taską atliks
Blogai supranti. Bet netgi daug sunkiau susikalbanciu threadu butu geriau, nei jokiu threadu Intel atveju 😀