Site icon HWCooling.net

Big.LITTLE v Alder Lake funguje díky technologii Thread Director

Intel Thread Director: řešení problémů s provozem big.LITTLE procesorů Alder Lake ve Windows?

Publikovali jsme už rozbory CPU architektury procesorů Alder Lake – velkých jader Golden Cove a „malých“ Gracemont. Intel už ale odhalil i možná stejně důležitou třetí komponentu: speciální scheduler, který má přiřazovat programy tam, kam se hodí – na malé, nebo velké jádro. Má zajistit, aby „big.LITTLE“ fungovalo správně. Možná hlavně na něm bude záviset, jestli se potvrdí všechny výhrady skeptiků, nebo jim Alder Lake vytře zraky.

Tento scheduler, respektive komponenta pro scheduler se jmenuje Intel Thread Director a jde o technologii na rozhraní hardwaru, firmwaru a softwaru. O Alder Lake se objevily informace, že bude mít hardwarový scheduler (česky plánovač) úloh na procesoru, ale to dost dobře nelze. O co se ve skutečnosti jedná, je o to, že plánovač CPU v operačním systému bude od hardwaru dostávat asistenci při rozhodování, jak úlohy na jádra procesoru přidělovat. Nejde o „akceleraci“, ale jen o zprostředkování informací softwaru. Samotné rozhodnutí musí zůstat na operačním systému, ale díky tomu, že dostává od CPU více informací, se může rozhodovat lépe.

Intel na tomto problému spolupracovat s Microsoftem a výsledkem je Thread Director a na druhé straně speciální podpora pro využití této funkce v nových Windows 11. Již jste možná zaznamenali zprávy o tom, že Windows 11 má právě vylepšovat fungování big.LITTLE procesorů. Podpora hardwarové asistence pro plánovač CPU je toho součástí.

Jak funguje hardwarová asistence pro plánovač CPU

Intel Thread Director používá integrovaný mikrořadič (mělo by jít o nějakou řídící jednotku, tato technologie je asi propojená s funkcí Performance Monitoring Unit), který monitoruje výkon a různé ukazatele zátěže pro jednotlivá jádra/vlákna procesoru. Měl by sledovat zátěž, množství load/store operací, které ukazují, jak moc je běžící program limitovaný pamětí (namísto limitace hrubým výkonem jádra), množství větvení, druhy použitých instrukcí a další vzorce chování. Také monitoruje, zda běžící procesy používají instrukce s vysokou spotřebou jako je AVX2 nebo VNNI.

Z těchto dat pak Thread Director vytváří zpětnou vazbu, kterou předává běžícímu operačnímu systému (v tomto případě Windows 11). Ta by měla být komunikována přes rozhraní EHFI (Extended Hardware Frequency Interace).

Intel Thread Director (Zdroj: Intel)

Thread Director předává Windows 11 informaci o tom, zda je vlákno běžící na procesoru „důležité“ (ve smyslu, že by prospělo, pokud by bylo zpracováváno rychleji), nebo naopak ne. Jednak může sdělovat, že určitý proces by měl jít na výkonné jádro (i na úkor těch, které už tam běží) a na druhou stranu také označuje procesy, které jsou nejvhodnějšími kandidáty pro přesun na malá jádra.

Toto pak Windows 11 může použít k rozhodnutí, které programy/procesy může „přiškrtit“, když procesoru dojdou volná jádra/vlákna – tedy třeba která vlákna přesunout z velkých jader na malá jádra. Thread Director tímto způsobem ovlivňuje výsledek v situacích, kdy si OS musí vybrat, které úlohy umístí na výkonnější a které na úspornější jádra. Díky jeho telemetrii by se měla zlepšit pravděpodobnost, že rozhodnutí bude provedeno správně.

Důležité je, že analýza mikrořadičem Thread Director je hodně rychlá – chování procesu dokáže Intel údajně „poznat“ už za nějakých 30 mikrosekund, zatímco scheduler operačního systému při vlastním hodnocení běžících úloh postupuje údajně o hodně pomaleji a reaguje na jejich charakter třeba až za stovky milisekund. OS ale asi nikdy nemůže analyzovat běžící program tak do hloubky, protože kdyby zkoumal, které instrukce se používají a podobně, spotřebovával by sám výkon procesoru a vše zpomaloval. Pokud se ale tato práce provádí ve speciální jednotce integrované v CPU, nemá tato analýza dopad a spotřeba navíc je nejspíš minimální.

Intel Thread Director (Zdroj: Intel)

Ladění na výkon i spotřebu

Obecně by Thread Director měl pomáhat identifikovat aplikace (procesy), které skutečně potřebují výkon a jejich rychlost je pro uživatele podstatná. Takové aplikace/procesy pak označí pro Windows a doporučí je přesunout na velká jádra. Naopak zase pomáhá vyhodnocovat, které procesy jsou různé služby na pozadí a podobné věci, u kterých spíše chcete, aby neotravovaly vyšší spotřebou/otáčkami ventilátoru a nebraly výkon důležitějším činnostem. Takové procesy by měly být označeny pro přesun na malá jádra.

Mikrořadič ale například dokáže odhalit situace, kdy program ve skutečnosti čeká na paměti a není limitován hrubým výkonem – v takových případech je možné snížit frekvenci a napětí velkého jádra (a tím snížit spotřebu), aniž by se zhoršil dosažený výkon. Nebo by Thread Director měl umět poznat, že aplikace zdánlivě plně vytěžující jádro ve skutečnosti jen dokola projíždí čekací smyčku, která ve skutečnosti nic nedělá. Takový proces pak pomůže přesměrovat na malé jádro opět tím, že ho označí pro operační systém.

Další věc, kterou se Thread Director řídí, je využití pokročilých instrukcí jako je AVX/AVX2 nebo VNNI (rozšíření určené pro akceleraci umělé inteligence). Jejich použití by zřejmě mělo vést k tomu, že procesy budou označeny k přiřazení na velká jádra.

Thread Director nebude zaměřený jen na výkon, ale také na spotřebu, což bude využíváno v noteboocích při provozu na baterie. V noteboocích při provozu na baterie, kdy je důležitá spotřeba, do všech těchto rozhodnutí ale ještě bude promlouvat efektivita, takže v takovém případě může naopak operační systém ve spolupráci s Thread Directorem posílat mnoho úloh přednostně na malá jádra, ačkoliv by při desktopovém využití byly směrovány na velká jádra. Celá technologie by se měla umět rozhodovat dynamicky podle vstupních parametrů, kterými jsou i aktuální nastavení spotřeby, ale třeba také teploty.

Procesor Alder Lake s osmi jádry Golden Cove a osmi úspornými jádry Gracemont (Zdroj: Intel)

Jak systém rozlišuje velká jádra, malá jádra a Hyper Threading?

Vedle této zpětné vazby také ještě procesor Alder Lake operačnímu systému sděluje topologii svých jader, tedy které jádro (vlákno) je jakého typu. To je další informace, kterou OS potřebuje k tomu, aby se při přiřazení programů na jádra dokázal správně rozhodovat.

Intel uvádí, že z pohledu přiřazování programů (procesů) na jednotlivá jádra, respektive vlákna procesoru Alder Lake existuje hierarchie výkonu, která má tři stupně. Nejvýkonnější situace je, když běží jedno vlákno na Performance Core/P-Core (tedy velkém jádru Golden Cove) a jeho druhé vlákno není využité. Na druhém místě není velké jádro s využitým HT a oběma vlákny aktivními, ale Efficient Core/E-Core, „malé“ jádro Gracemont. Až třetí v hierarchii je pak jedno vlákno velkého jádra P-Core v situaci, kdy jsou vytížena obě jeho vlákna.

Podle Intelu tedy má jedno jádro Gracemont výkon vyšší, než jaký je individuálně výkon jednoho ze dvou vláken jednoho P-Core při využití HT, tedy když jsou obě vlákna zatížená (což má také tu implikaci, že dvojice Gracemontů by měla mít vyšší cenu pro MT výkon než jedno velké jádro).

Při postupném zatěžování procesoru vícevláknovými programy je proto výchozí chování takové, že přednostně má Windows 11 obsadit velká jádra, ale vždy každé jen jedním vláknem, aby výkon jednoho vlákna nešel dolů. Po vyčerpání volných úplně velkých jader se úlohy nejprve začnou přidávat na malá jádra a druhá vlákna velkých jader zůstávají prázdná. Až i po vyčerpání malých jader se začne využívat HT, tedy druhé vlákno u velkých jader. To je proto, že ačkoliv použití HT zvyšuje celkový MT výkon, výkon na jedno vlákno se při aktivním HT sníží (při HT je výkon obou vláken zhruba symetrický, takže například místo 100 % v jednovláknovém režimu dostanete třeba 2×60 % jednovláknového výkonu).

Alder Lake má tři varianty. Všechny čipy mají osm malých jader, velkých jader je buď osm, šest, nebo dvě (Zdroj: Intel)

Intel Thread Director nejprve jen ve Windows 11

Tato pokročilá zpětná vazba určená pro CPU scheduler operačního systému bude minimálně ze začátku využívaná jen ve Windows 11, takže pro optimální výkon a chování procesorů Alder Lake budete potřebovat tento systém. Pro Windows 10 by snad mohla být dostupná jednodušší verze nazvaná Hardware Guided Scheduling, v jejímž případě asi operační systém nepracuje s tolika různými informacemi od firmwaru a procesoru a nebude se tedy rozhodovat tak „fundovaně“ jako W11.

Intel se při vývoji této funkce údajně soustředil na to, aby ji s Microsoftem rozběhali ve Windows 11, který vyjdou nyní na podzim. Minimálně část z této funkcionality ale je v plánu zapracovat i do Linuxu, takže tato platforma snad nebude ve velké nevýhodě, alespoň v dlouhodobém horizontu.

„Upstreamování“ podpory v Linuxu ale může trvat pár vývojových cyklů a měsíce potřebné pro zrevidování a začlenění patchů. Mohlo by to zabrat několik měsíců, ale možná i víc jak rok. Podle toho, jak se budou patche Intelu vývojářům zamlouvat a zda v nich nebudou požadovat změny.

Zdroje: AnandTech, Intel (1, 2)

Jan Olšan, redaktor Cnews.cz