Pokyny k řízení mezipaměti - Cache control instruction

v výpočetní, a instrukce pro ovládání cache je nápověda vložená do souboru návod proud a procesor zamýšlel zlepšit výkon hardwarové mezipaměti, použitím informovanost z vzor přístupu do paměti dodává programátor nebo překladač.[1] Mohou se snížit znečištění mezipaměti, snížit požadavek na šířku pásma, obejít latence poskytnutím lepší kontroly nad pracovní sada. Většina pokynů pro řízení mezipaměti neovlivňuje sémantiku programu, i když některé mohou.

Příklady

Několik takových instrukcí s variantami podporuje několik procesorů instrukční sada architektury, jako je PAŽE, MIPS, PowerPC, a x86.

Prefetch

Také nazývané dotek bloku datové mezipaměti, efektem je požadavek načíst řádek mezipaměti spojený s danou adresou. To provádí PREFETCH instrukce v x86 instrukční sada. Některé varianty obcházejí vyšší úrovně hierarchie mezipaměti, což je užitečné v kontextu „streamování“ pro data, která se procházejí jednou, a nikoli v pracovní sadě. The prefetch by mělo dojít dostatečně včas dopředu, aby se zmírnilo latence přístupu do paměti, například ve smyčce procházející paměti lineárně. The Sbírka překladačů GNU vnitřní funkce __builtin_prefetch lze jej použít k vyvolání v programovacích jazycích C nebo C ++.

Předběžné načtení instrukce

Varianta předběžného načtení do mezipaměti instrukcí.

Blok datové mezipaměti přiděluje nulu

Tato nápověda se používá k přípravě řádků mezipaměti před úplným přepsáním obsahu. V tomto příkladu nemusí CPU nic načítat hlavní paměť. Sémantický efekt je ekvivalentní zarovnanému pamětová sada bloku velikosti mezipaměti na nulu, ale operace je skutečně zdarma.

Blokování datové mezipaměti

Tato nápověda se používá k vyřazení řádků mezipaměti bez potvrzení jejich obsahu do hlavní paměti. Je nutná opatrnost, protože jsou možné nesprávné výsledky. Na rozdíl od jiných tipů na mezipaměť je významně upravena sémantika programu. Používá se ve spojení s přidělit nulu pro správu dočasných dat. Tím se ušetří nepotřebná šířka pásma hlavní paměti a znečištění mezipaměti.

Vyrovnání bloku mezipaměti dat

Tato nápověda vyžaduje okamžité vyklizení řádku mezipaměti, čímž se uvolní místo pro budoucí přidělení. Používá se, když je známo, že data již nejsou součástí pracovní sada.

Další rady

Některé procesory podporují variantu pokyny pro načtení a uložení které také znamenají tipy na mezipaměť. Příkladem je načíst poslední v PowerPC instrukční sada, která naznačuje, že data budou použita pouze jednou, tj. dotyčný řádek mezipaměti může být posunut do čela fronty vystěhování, zatímco je stále používán, pokud je stále přímo potřeba.

Alternativy

Automatické prefetch

V nedávné době se pokyny pro řízení mezipaměti staly méně populárními, protože stále pokročilejší návrhy aplikačních procesorů od Intel a PAŽE věnovat více tranzistorů zrychlení kódu napsaného v tradičních jazycích, například provádění automatického předběžného načítání, s hardwarem pro detekci vzorů lineárního přístupu za běhu. Techniky však mohou zůstat platné pro procesory orientované na propustnost, které mají rozdílnou propustnost vs latence, a mohou upřednostňovat věnovat více oblasti prováděcím jednotkám.

Paměť Scratchpad

Některé procesory podporují paměť zápisníku - do kterých mohou být zařazeny dočasné položky a - přímý přístup do paměti (DMA) pro přenos dat do az hlavní paměť když je potřeba. Tento přístup používá Celulární procesor, a nějaký vestavěné systémy. Ty umožňují větší kontrolu nad provozem paměti a lokalitou (protože pracovní sada je spravována explicitními přenosy) a eliminuje potřebu nákladných soudržnost mezipaměti v manycore stroj.

Nevýhodou je, že vyžaduje použití výrazně odlišných programovacích technik. Je velmi těžké přizpůsobit programy napsané v tradičních jazycích, jako jsou C a C ++, které programátorovi poskytují jednotný pohled na velký adresní prostor (což je iluze simulovaná mezipamětí). Tradiční mikroprocesor může snadněji spouštět starší kód, který lze poté zrychlit instrukcemi pro řízení mezipaměti, zatímco stroj založený na zápisníku vyžaduje od základu vyhrazené kódování pro rovnoměrné fungování. Pokyny pro řízení mezipaměti jsou specifické pro určitou velikost řádku mezipaměti, která se v praxi může mezi generacemi procesorů ve stejné architektonické rodině lišit. Mezipaměti mohou také pomoci sloučit čtení a zápisy z méně předvídatelných přístupových vzorů (např. Během mapování textury ), zatímco scratchpad DMA vyžaduje přepracování algoritmů pro předvídatelnější „lineární“ procházení.

Proto jsou zápisníky obecně s tradičními programovacími modely těžší používat datový tok modely (např TensorFlow ) může být vhodnější.

Vektorové načtení

Vektorové procesory (například moderní grafická jednotka (GPU) a Xeon Phi ) používat masivní rovnoběžnost dosáhnout vysoké propustnosti při práci s latencí paměti (což snižuje potřebu předběžného načítání). Mnoho operací čtení se vydává souběžně pro následné vyvolání a výpočetní jádro; výpočty mohou být pozastaveny a čekají na budoucí data, zatímco prováděcí jednotky se věnují práci na datech z dat minulých požadavků, která se již objevila. To je pro programátory snazší využít ve spojení s příslušnými programovacími modely (výpočetní jádra ), ale těžší je použít na programování pro všeobecné účely.

Nevýhodou je, že mnoho kopií dočasných stavů může být uloženo v lokální paměť a zpracovatelský prvek, čeká na data za letu.

Reference

  1. ^ „Příručka k počítači Power, viz 1.10.3 Pokyny pro ovládání mezipaměti“ (PDF).