Co je provedení mimo provoz?

Počítače jsou složité stroje, jejichž součást není složitější než CPU. Na základní úrovni přehledu se zdá, že CPU by měl být relativně jednoduchý. Vezme řadu příkazů, zpracuje je a poté vydá data. To se však jen málo podobá skutečnému fungování moderních CPU.

Sub-skalární až super-skalární

Dřívější CPU byly přesně takové, jaké byste očekávali. Přijímali pokyny jednotlivě, v pořadí, v jakém je dostali, zpracovali je až do konce a poté přešli k dalšímu pokynu. CPU tohoto typu byly subskalární, schopné dokončit méně než jednu instrukci za cyklus hodin. Návrháři CPU zjistili, že existuje mnoho různých fází dokončení instrukce. Každá z těchto fází vyžadovala jiný hardware. To znamenalo, že při spouštění jediné instrukce celou sekvencí najednou některé části hardwaru zůstaly nečinné. V jakémkoli druhu procesoru je nečinný hardware zbytečným hardwarem.

Aby bylo možné využít tento nečinný hardware, byly návrhy CPU aktualizovány tak, aby využívaly přístup z potrubí. To dále oddělilo hardware pro každou fázi, ale umožnilo je všechny využívat současně sérií instrukcí. I když stále trvalo několik cyklů, než každá instrukce prošla potrubím, celková propustnost byla jedna instrukce na cyklus. Tím se CPU staly skalárními.

Aby bylo možné udělat více, bylo třeba procesory udělat superskalární. K dosažení tohoto cíle bylo implementováno několik paralelních potrubí.

Vedení potrubí napájených daty

Hlavním problémem s výkonem počítačů je obvykle latence paměti. Mnoho instrukcí pracuje na datech, takže tato data musí být k dispozici pro provedení instrukce. Otázkou je, co uděláte, když potřebujete na tato data čekat, protože nejsou okamžitě k dispozici? Tradičně byla odpověď jen zastavit a čekat, až bude k dispozici. Tím zůstane celý kanál prázdný, potenciálně pro stovky cyklů CPU. Věci se ještě zhorší, když dvě instrukce v paralelních pipelinech musí čekat na paměť, protože první zadrží i požadavek na data druhé. I když mezipaměť CPU může pomoci vyřešit tento problém, stále jej nedokáže vyřešit. K vyřešení bylo potřeba nové paradigma. Ta změna paradigmatu byla Out Of Order Execution neboli OOO.

První fází pipeline je dekódování instrukce. To znamená zjistit, co je třeba udělat, a ověřit, zda jsou k dispozici data potřebná pro operaci. V OOO CPU jsou dekódované instrukce přidány do fronty. Jsou odstraněny z fronty a skutečně zpracovány, když jsou data, která potřebují, dostupná. V zásadě nezáleží na tom, v jakém pořadí byly instrukce přidány do fronty. Pokud dřívější instrukce čeká na data, novější instrukce může přeskočit dopředu, pokud je připravena ke spuštění. Procesory OOO mohou změnit pořadí instrukcí, které mají zpracovat, na základě fronty nadcházejících instrukcí a podle toho, které z nich jsou připraveny k provedení.

Kritické závislosti

Tento proces předpokládá dvě věci. Za prvé, že je možné spolehlivě identifikovat a ošetřit skutečné závislosti. Za druhé, že můžete spolehlivě zpracovat a identifikovat falešné závislosti. Jaký je rozdíl? No, skutečná závislost je závislost, kterou nelze v OOO systému vůbec zmírnit. Nejjednodušším příkladem je čtení-po-zápis. Pokud máte jednu instrukci, která má zapsat nějaká data, a druhou, která má potom tato data číst, neexistuje způsob, jak tyto instrukce změnit. Musí být vyplněny v pořadí, v jakém byly předloženy, jinak získáte nesmyslná data.

Falešná závislost je taková, kterou lze skrýt jiným chytrým trikem. Vezměme si příklad zápisu po přečtení. Na první pohled si můžete myslet, že data nemůžete přepsat, dokud je nepřečtete. Věci však nejsou tak jednoduché. Co když máte jiné místo, kde můžete zapisovat nová data, a pak můžete nová a stará data jednoduše zaměnit, jakmile budou stará data přečtena? Toto je proces přejmenování registrů a je rozhodující pro zpracování OOO.

Instrukční sada obvykle definuje sadu počtu architektonických registrů, které se používají v systému. Doslova nemůžete oslovit ostatní. Ale co když děláte registry nadměrného poskytování? Můžete je z větší části pouze skrýt, použít je k uložení dat, která ještě neměla být zpracována, a pak jednoduše prohodit štítky skrytých a architektonických registrů, až bude časová osa opět správná. V každém okamžiku existuje přesné množství architektonických registrů, jen nejsou nutně vždy na stejném místě. Analogie v reálném světě by byla hot-desking.

Závěr

Provádění mimo pořadí je paradigma zpracování, kde může CPU dynamicky měnit pořadí v době provádění. To se provádí na základě nejdříve vydaných pokynů, které mají k dispozici data. To znamená, že instrukce načítané do pipeline jsou vždy připraveny k provedení a nedochází k žádným prodlevám při čekání na data. Samozřejmě je potřeba mít dostatečně dlouhou frontu, aby se nezaplnila instrukcemi čekajícími na data, ale to je implementační výzva. Provádění OOO spoléhá na přejmenování registru, aby se skryly falešné závislosti. I když jsou tyto instrukce skutečně prováděny mimo pořadí, registry jsou přejmenovány tak, aby tuto skutečnost skryly před zbytkem počítače.


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