Co je přepínač kontextu?

V počátcích výpočetní techniky byly CPU čistě sekvenční stroje. To pomohlo udržet návrhy jednoduché. To však také omezovalo výkon. Mnoho procesů si bude muset vyžádat data ze systémové paměti RAM nebo pevného disku. I když je systémová RAM rychlá, stále není tak rychlá jako CPU a nechává ji nečinně čekat na data, dokud se z RAM nevrátí odpověď. Situace je ještě horší pro data požadovaná z pevného disku, což je úložné zařízení mnohem pomalejší než RAM. Zde může být CPU delší dobu nečinný a čekat na odezvu. Bohužel u sekvenčních procesorů je tento problém prostě nevyhnutelný.

Naštěstí moderní CPU již nejsou sekvenční. Nabízejí mnoho pokročilých funkcí, jako je provádění mimo pořadí a více vláken. Provádění mimo pořadí umožňuje CPU analyzovat nadcházející instrukce a měnit jejich pořadí pro maximalizaci efektivity. Multi-threading umožňuje CPU mít mnoho různých vláken nebo procesů.

Kromě toho, že má více jader, nemůže CPU běžet více než jedno najednou. Může to však vypadat tak, že mezi nimi budete pravidelně přepínat, aby bylo zajištěno, že každý z nich získá znatelné množství konstantního času CPU. Proces přepínání mezi vlákny se nazývá přepínání kontextu.

Jak funguje přepínání kontextu?

Kontextový přepínač se skládá ze dvou částí, vypínání předchozího vlákna a zapínání nového. Chcete-li změnit staré vlákno, musí CPU uložit svůj aktuální stav do řídicího bloku procesu nebo rámce přepínače. To zahrnuje hodnoty všech relevantních CPU registrů a vždy sestává z hodnoty programového čítače. Jakmile je vlákno uloženo, může být do připravené fronty přidán popisovač, který umožní jeho obnovení v případě potřeby.

Přepínání v následujícím vlákně je stejný proces obráceně. Vlákno je vybráno buď z připravené fronty, v závislosti na vážení. Alternativně může být zvolena přerušením indikujícím, že událost, na kterou vlákno čekalo, je nyní připravena nebo dokončena. Data pro vlákno se poté zkopírují do správných registrů a vlákno se obnoví. V tomto okamžiku je nové vlákno připraveno pokračovat v provozu od místa, kde bylo zastaveno.

Dopad na výkon

Proces čtení a zápisu dat při přepínání vlákna dovnitř nebo ven trvá nějakou dobu, i když ne moc, protože používaná paměť je obvykle vysokorychlostní. Existují však další náklady na výkon. Při přepínání vláken nemusí být data v mezipaměti a vyrovnávací paměti CPU z předchozího vlákna pro nové vlákno relevantní. To může vést k výraznému zvýšení TLB ( Translation Lookaside Buffer ) a vyrovnávací paměti.

Tento efekt není významný, pokud byla dvě vlákna vytvořena stejným procesem, protože pravděpodobně sdílejí značné paměťové prvky. Při přepínání mezi vlákny z různých metod musí být TLB zcela vyprázdněno. To vede ke 100% chybovosti TLB, přičemž je také výrazně snížena četnost zásahů mezipaměti CPU.

Zatímco CPU nabízejí hardwarovou podporu pro přepínání kontextu, operační systémy to obvykle nepoužívají. Hardwarové přepínání kontextu postrádá povědomí o relevanci dat. Proto potřebuje uložit a obnovit všechny registry, čímž se prodlouží čas a potřebný úložný prostor.

Navíc hardwarové přepínání kontextu neukládá data z registrů s pohyblivou řádovou čárkou, což může být nezbytná funkce. Proto se obecně používá softwarové přepínání kontextu. Umožňuje uchovávat data ze všech registrů, včetně registrů s pohyblivou řádovou čárkou. Softwarové přepínače kontextu chápou relevanci dat. To znamená, že si může vybrat, které z nich uloží podle potřeby.

Závěr

Kontextové přepínání je proces, kterým moderní CPU přepíná, které vlákno běží. Tento proces zahrnuje uložení relevantních dat aktuálního vlákna a obnovení příslušných dat nového vlákna. Kontextové přepínání je spojeno s náklady na výkon souvisejícími s časem potřebným k provedení přepnutí a se zvýšenou rychlostí vynechání mezipaměti a TLB, protože se neukládají. K přepínání kontextu dochází buď proto, aby bylo zajištěno, že všechna vlákna mají dostatek času CPU, nebo kvůli přerušení indikujícímu, že událost, na kterou linka čekala, je dokončena.


Jak klonovat pevný disk

Jak klonovat pevný disk

V moderním digitálním věku, kde jsou data cenným aktivem, může být klonování pevného disku v systému Windows pro mnohé zásadním procesem. Tento komplexní průvodce

Jak opravit selhání načtení ovladače WUDFRd v systému Windows 10?

Jak opravit selhání načtení ovladače WUDFRd v systému Windows 10?

Setkáváte se při spouštění počítače s chybovou zprávou, která říká, že se nepodařilo načíst ovladač WUDFRd do vašeho počítače?

Jak opravit kód chyby NVIDIA GeForce Experience 0x0003

Jak opravit kód chyby NVIDIA GeForce Experience 0x0003

Máte na ploše zkušenosti s chybovým kódem 0x0003 NVIDIA GeForce? Pokud ano, přečtěte si blog a zjistěte, jak tuto chybu rychle a snadno opravit.

Co je SMPS?

Co je SMPS?

Než si vyberete SMPS pro svůj počítač, zjistěte si, co je SMPS, a význam různých hodnocení účinnosti.

Proč se můj Chromebook nezapne

Proč se můj Chromebook nezapne

Získejte odpovědi na otázku Proč se můj Chromebook nezapíná? V této užitečné příručce pro uživatele Chromebooků.

Jak nahlásit phishingové podvody společnosti Google

Jak nahlásit phishingové podvody společnosti Google

V této příručce se dozvíte, jak nahlásit podvodníka společnosti Google a zabránit mu v podvádění ostatních.

Roomba se zastaví, přilepí a otočí – oprava

Roomba se zastaví, přilepí a otočí – oprava

Vyřešte problém, kdy se váš robotický vysavač Roomba zastaví, zasekne a stále se otáčí.

Jak změnit nastavení grafiky na Steam Deck

Jak změnit nastavení grafiky na Steam Deck

Steam Deck nabízí robustní a všestranný herní zážitek přímo na dosah ruky. Chcete-li však optimalizovat své hraní a zajistit to nejlepší možné

Co je zabezpečení založené na izolaci?

Co je zabezpečení založené na izolaci?

Chtěli jsme se ponořit do tématu, které je ve světě kybernetické bezpečnosti stále důležitější: zabezpečení založené na izolaci. Tento přístup k

Jak používat Auto Clicker pro Chromebook

Jak používat Auto Clicker pro Chromebook

Dnes jsme se chtěli ponořit do nástroje, který dokáže automatizovat opakované klikání na vašem Chromebooku: Auto Clicker. Tento nástroj vám může ušetřit čas a