reklama
Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Může Microsoft za problémy s výkonem CPU Ryzen ve hrách?

8.3.2017, Jan Vítek, aktualita
Může Microsoft za problémy s výkonem CPU Ryzen ve hrách?
Aktualizováno: V nezávislých testech se ukázalo, že procesory AMD Ryzen se zapnutým SMT mohou mít výrazně nižší výkon ve hrách, než když SMT vypneme a celkový počet jejich jader snížíme na 8. Nyní se provalilo, že prý za to může plánovač procesů ve W10.
AMD už reagovalo na níže uvedené zprávy o SMT a plánovači ve Windows 10, což mnohé vysvětluje. Dále zpráva pokračuje v původním znění.



Za problémy procesorů Ryzen v řadě her tak může Microsoft, jenž vytvořil nesprávně pracující plánovač ve všech verzích Windows 10 a zajímavé je, že Windows 7 takto postiženy být nemají, jak se ukázalo na provedených testech zveřejněných na fórech Anandtechu. Zatím také není jasné, jak se tato věc týká systému Windows 8.1, ale ten je stejně oproti sedmičkám a desítkám už daleko méně zastoupen, takže o něj tak moc nejde.





SMT na procesorech AMD umožňuje, aby jedno jádro zpracovávalo najednou dvě vlákna, přičemž to by měl plánovač rozhodně brát v úvahu, aby mohl naplno využít výkon procesoru. To znamená, že pokud hra dokáže využívat vícejádrový procesor, plánovač by měl zajistit, aby jedno jádro bylo zaměstnáno pokud možno jedním vláknem. A teprve až dojdou fyzická jádra může dojít na využití SMT. Je totiž jasné, že pokud se pro zpracování dvou procesových vláken využijí dvě procesorová jádra, získáme daleko vyšší výkon, než když jsou obě vlákna zpracovávána jedním jádrem.

Plánovač ve Windows 10 tak v případě Hyperthreadingu identifikuje správě fyzická a logická jádra, ale to zatím nedokáže v případě osmijádrových procesorů Ryzen, jež má vidět prostě jako modely se 16 fyzickými rovnocennými jádry. Z toho je zřejmé proč se tento problém objevuje především ve hrách. Ostatní benchmarky jsou spíše jednovláknové, nebo využívající všechna jádra procesoru a v takovém případě je jedno, zda plánovač rozlišuje fyzická od logických. Hry ale zdaleka nedokáží využít 16 jader, takže zde už to pochopitelně vadí a nastává degradace výkonu. To samé se bude projevovat i v softwaru, který umí využít třeba jen 4 jádra.

Vedle toho se ve zprávě uvádí, že Windows 10 také nesprávně detekují kapacitu paměti cache, kterou má každé vlákno k dispozici, jak vyplývá z následujícího výpisu týkajícího se jednoho jádra s SMT. Dle něj má plánovač myslet, že Ryzen má v sobě 264 megabajtů paměti cache, přičemž ten má celkově "jen" 20 MB L2 a L3 cache.


*--------------- Data Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64
*--------------- Instruction Cache 0, Level 1, 64 KB, Assoc 4, LineSize 64
*--------------- Unified Cache 0, Level 2, 512 KB, Assoc 8, LineSize 64
*--------------- Unified Cache 1, Level 3, 16 MB, Assoc 16, LineSize 64
-*-------------- Data Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64
-*-------------- Instruction Cache 1, Level 1, 64 KB, Assoc 4, LineSize 64
-*-------------- Unified Cache 2, Level 2, 512 KB, Assoc 8, LineSize 64
-*-------------- Unified Cache 3, Level 3, 16 MB, Assoc 16, LineSize 64


Pro porovnání tu mám celý výpis týkající se procesoru Core i7-4770K, kde je unifikovaná cache uvedena správně jenom jednou a hvězdičky ukazují, že je určena pro všechna jádra.


**------ Data Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64
**------ Instruction Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64
**------ Unified Cache 0, Level 2, 256 KB, Assoc 8, LineSize 64
******** Unified Cache 1, Level 3, 8 MB, Assoc 16, LineSize 64
--**---- Data Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64
--**---- Instruction Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64
--**---- Unified Cache 2, Level 2, 256 KB, Assoc 8, LineSize 64
----**-- Data Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64
----**-- Instruction Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64
----**-- Unified Cache 3, Level 2, 256 KB, Assoc 8, LineSize 64
------** Data Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64
------** Instruction Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64
------** Unified Cache 4, Level 2, 256 KB, Assoc 8, LineSize 64


Jenomže jak se ukázalo, uvedený výpis utility Coreinfo je skutečně podivný, neboť osobně (a nejsem sám) jsem dostal následující informace. Ty už vypadají v pořádku a udávají, že 16 MB paměti L3 cache je rozděleno mezi dva čtyřjádrové CCX a identifikují i celá "dvoujádra", čili fyzická jádra s SMT. Že by už proběhly nějaké úpravy?


AMD Ryzen 7 1800X Eight-Core Processor
AMD64 Family 23 Model 1 Stepping 1, AuthenticAMD
Microcode signature: 08001105

**-------------- Data Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64
**-------------- Instruction Cache 0, Level 1, 64 KB, Assoc 4, LineSize 64
**-------------- Unified Cache 0, Level 2, 512 KB, Assoc 8, LineSize 64
********-------- Unified Cache 1, Level 3, 8 MB, Assoc 16, LineSize 64
--**------------ Data Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64
--**------------ Instruction Cache 1, Level 1, 64 KB, Assoc 4, LineSize 64
--**------------ Unified Cache 2, Level 2, 512 KB, Assoc 8, LineSize 64
----**---------- Data Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64
----**---------- Instruction Cache 2, Level 1, 64 KB, Assoc 4, LineSize 64
----**---------- Unified Cache 3, Level 2, 512 KB, Assoc 8, LineSize 64
------**-------- Data Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64
------**-------- Instruction Cache 3, Level 1, 64 KB, Assoc 4, LineSize 64
------**-------- Unified Cache 4, Level 2, 512 KB, Assoc 8, LineSize 64
--------**------ Data Cache 4, Level 1, 32 KB, Assoc 8, LineSize 64
--------**------ Instruction Cache 4, Level 1, 64 KB, Assoc 4, LineSize 64
--------**------ Unified Cache 5, Level 2, 512 KB, Assoc 8, LineSize 64
--------******** Unified Cache 6, Level 3, 8 MB, Assoc 16, LineSize 64
----------**---- Data Cache 5, Level 1, 32 KB, Assoc 8, LineSize 64
----------**---- Instruction Cache 5, Level 1, 64 KB, Assoc 4, LineSize 64
----------**---- Unified Cache 7, Level 2, 512 KB, Assoc 8, LineSize 64
------------**-- Data Cache 6, Level 1, 32 KB, Assoc 8, LineSize 64
------------**-- Instruction Cache 6, Level 1, 64 KB, Assoc 4, LineSize 64
------------**-- Unified Cache 8, Level 2, 512 KB, Assoc 8, LineSize 64
--------------** Data Cache 7, Level 1, 32 KB, Assoc 8, LineSize 64
--------------** Instruction Cache 7, Level 1, 64 KB, Assoc 4, LineSize 64
--------------** Unified Cache 9, Level 2, 512 KB, Assoc 8, LineSize 64


Co tedy můžeme dělat, než se dostaví náprava tohoto problému? Pokud Ryzen nevyužíváte především pro úlohy, které dokáží využít všechna jádra, bude lepší prostě v BIOSu vypnout SMT. To tedy platí především pro herní sestavy. Vypadá to také, že nejde o závažný problém a už vůbec ne o něco, na co nebylo možné přijít ještě před vypuštěním CPU Ryzen na trh, a tak je otázka, proč jej AMD s Microsoftem už dávno nevyřešilo.

A pak je tu ještě jedna otázka, která vyvstává z architektury procesorů Ryzen s jejich čtyřjádrovými jednotkami CCX. Jak víme, ty tu máme v našem případě dvě a každá má svou vlastní polovinu z celkových 16 MB L3 cache. Můžeme tak uvažovat o tom, že problémy s výkonem na Windows 10 pramení i z toho, jak plánovač ve Windows přesouvá vlákna mezi jádry, neboť se může stávat, že vlákno je najednou zpracováváno jádrem z druhého CCX, který má svých vlastních 8 MB cache, které vlákno před tím nevyužívalo a nemá tam svá data (čili jde o tzv. cache miss). Plánovač může chovat tak, jako by osmijádrový Ryzen měl jednu unifikovanou 16MB L3 cache, což nemá. Měl by tak procesy udržovat vždy alespoň na jádrech jednoho CCX.

Zdroj: Reddit, wccftech
reklama