Runahead - Runahead

Runahead je technika, která umožňuje a mikroprocesor předem zpracovat instrukce v době mezipaměti vynechejte cykly místo pozastavení. Předem zpracované instrukce se používají ke generování instrukcí a datový tok prefetches detekcí chybí mezipaměť dříve, než by se jinak vyskytly pomocí zdrojů nečinného provádění k výpočtu adres instrukcí a načítání datového proudu pomocí dostupných informací, které jsou nezávislé na chybě mezipaměti.

Hlavní náklady na hardware jsou prostředky kontrolní bod the Registrovat stav souboru a zabránění úpravám předzpracovaných obchodů Paměť. Tohoto kontrolního bodu lze dosáhnout pomocí velmi malého množství hardwaru, protože všechny výsledky vypočítané během runaheadu jsou zahozeny poté, co byla obsluhována chyba v mezipaměti, kdy se normální provádění obnoví pomocí kontrolního bodu zaregistrovat soubor Stát.

Výsledky větví vypočítané během režimu runahead lze uložit do a posuvný registr, které lze použít jako vysoce přesné prediktor větve když se obnoví normální provoz.

Runahead byl původně zkoumán v kontextu mikroprocesoru v pořadí, ale tato technika byla rozšířena pro použití s mimo provoz mikroprocesory.

Zadávání runahead

Když procesor runahead zjistí první úroveň návod nebo chybí mezipaměť dat, zaznamená adresu instrukce chybujícího přístupu a přejde do režimu runahead. V případě potřeby se vygeneruje načtení požadavku na chybějící řádek instrukce nebo datové mezipaměti. Procesor kontroluje registrační soubor jedním z několika mechanismů, o nichž se pojednává později. Stav státu hierarchie paměti je kontrolní bod deaktivací obchodů. Pokyny k ukládání se mohou počítat adresy a zkontrolovat přístup, ale nemají povoleno zapisovat do paměti.

Protože hodnotu vrácenou z mezipaměti nelze předem zjistit, je možné, aby předem zpracované pokyny byly závislé na neplatných datech. Ty jsou označeny přidáním „neplatného“ nebo INV bitu do každého registru v souboru registru. Pokud byla runahead zahájena instrukcí k načtení, je cílový registr načtení označen INV.

Pokyny pro předběžné zpracování

Procesor poté pokračuje v provádění instrukcí i po chybě, ale všechny výsledky jsou přísně dočasné a slouží pouze k pokusu o generování dalších chyb v mezipaměti načítání, ukládání a instrukcí, které se promění v předvolby. Návrhář se může rozhodnout povolit runahead přeskočit instrukce, které nejsou přítomné v mezipaměti instrukcí, s tím, že kvalita všech generovaných předvoleb bude snížena, protože účinek chybějících instrukcí není znám.

Registry, které jsou cílem instrukce, která má jeden nebo více zdrojových registrů označených INV, jsou označeny INV. To umožňuje procesoru vědět, kterým hodnotám registrů lze (rozumně) důvěřovat během režimu runahead. Pokyny větve, které nelze vyřešit kvůli zdrojům INV, se jednoduše předpokládají, že jejich směr byl předpovězen správně. Výsledky větví jsou uloženy v posuvném registru pro pozdější použití jako vysoce přesné předpovědi během normálního provozu.

Všimněte si, že není možné dokonale sledovat hodnoty registru INV během režimu runahead. To není nutné, protože runahead se používá pouze k optimalizaci výkonu a všechny výsledky vypočítané během režimu runahead jsou zahozeny. Ve skutečnosti je nemožné dokonale sledovat neplatné hodnoty registrů, pokud byl runahead spuštěn zmeškanou mezipamětí instrukcí, během mezipaměti instrukcí došlo k chybě mezipaměti instrukcí, zátěž je závislá na úložišti s adresou INV (předpokládá, že je k dispozici hardware umožňující ukládání načíst přesměrování během runahead), nebo pokud je výsledek větve během runahead závislý na registru INV.

Opouštět runahead

Stav souboru registru se obnoví z kontrolního bodu a procesor je přesměrován na původní chybnou adresu načtení, když je načtení, které zahájilo režim runahead, obsluhováno.

Zaregistrujte možnosti kontrolního bodu souboru

Nejviditelnějším způsobem kontroly umístění souboru registru (RF) je jednoduše provést a flash kopie když procesor přejde do režimu runahead, proveďte zábleskovou kopii z BRF do RF, jakmile se obnoví normální provoz. K dispozici jsou jednodušší možnosti.

Jedním ze způsobů, jak eliminovat operace bleskového kopírování, je zapisovat do BRF i RF během normálního provozu, číst pouze z RF během normálního provozu a číst / zapisovat pouze BRF během režimu runahead.

Ještě agresivnějším přístupem je eliminace BRF a spoléhání se na předávací cesty, které poskytují upravené hodnoty během režimu runahead. Kontrolního bodu je dosaženo deaktivací zápisů do registračních souborů. Upravené hodnoty během režimu runahead lze poskytnout pouze směrovacími cestami.

Viz také

Reference