Stopová mezipaměť - Trace cache
V architektuře počítače je trasovací mezipaměť nebo mezipaměť trasování provádění specializovaná mezipaměť instrukcí, která ukládá dynamický proud pokynů známých jako trasování . Pomáhá zvyšovat šířku pásma instrukcí a snižovat spotřebu energie (v případě Intel Pentium 4 ) ukládáním stop instrukcí, které již byly načteny a dekódovány. Stopa procesoru je architektura navržena kolem cache trasování a zpracuje podle pokynů na úrovni trasování zrnitosti. Formální matematická teorie stop je popsána stopovými monoidy .
Pozadí
Nejdříve akademická publikace trasovací mezipaměti byla „Trace Cache: přístup s nízkou latencí k načítání instrukcí s velkou šířkou pásma“. Tento široce uznávaný dokument představili Eric Rotenberg, Steve Bennett a Jim Smith na konferenci International Symposium on Microarchitecture (MICRO) z roku 1996 . Dřívější publikací je americký patent 5381533 od Alexa Pelega a Uri Weisera ze společnosti Intel, „Paměť mezipaměti dynamického toku instrukcí organizovaná kolem trasovacích segmentů nezávislých na řádku virtuální adresy“, pokračování aplikace podané v roce 1992, později opuštěné.
Nutnost
Širší superskalární procesory vyžadují více instrukcí, které mají být načteny v jediném cyklu pro vyšší výkon. Pokyny, které mají být načteny, nejsou vždy na sousedních paměťových místech ( základní bloky ) kvůli instrukcím větvení a skoku . Procesory tedy potřebují další logickou a hardwarovou podporu k načtení a zarovnání těchto pokynů z nesouvislých základních bloků. Pokud se předpokládá, že více větví nebude přijato , mohou procesory načíst instrukce z více souvislých základních bloků v jednom cyklu. Pokud je však některá z větví předpovězena jako přijatá , měl by procesor ve stejném cyklu načíst instrukce z převzaté cesty. To omezuje schopnost načítání procesoru.
Vezměme si tyto čtyři základní bloky ( A , B , C , D ), jak je znázorněno na obrázku, které odpovídají na jednoduchý if-else smyčky. Tyto bloky budou uloženy souvisle jako ABCD v paměti. V případě, že pobočka D je předpovídal ne brát, načtení jednotka může vynést základní bloky A , B , C které jsou umístěny souvisle. Nicméně, pokud D se předpokládá, přijata , jednotky pro vyzvedávání musí načíst A , B , D které nejsou souvisle umístěna. Načítání těchto bloků, které nejsou souvisle umístěné, bude proto v jednom cyklu velmi obtížné. V situacích, jako jsou tyto trasovací mezipaměť, tedy pomáhá procesoru.
Po načtení ukládá trasovací mezipaměť pokyny v jejich dynamické posloupnosti. Když se s těmito instrukcemi znovu setkáte, trasovací mezipaměť umožňuje jednotce načítání instrukcí procesoru z ní načíst několik základních bloků, aniž by se museli starat o větve v toku provádění. Pokyny budou uloženy do trasovací mezipaměti buď po jejich dekódování, nebo po vyřazení. Sekvence instrukcí je však spekulativní, pokud jsou uloženy těsně po fázi dekódování.
Stopová struktura
Trasa, nazývaná také sekvence dynamických instrukcí, je položka v mezipaměti trasování. Lze jej charakterizovat maximálním počtem instrukcí a maximem základních bloků . Stopy mohou začínat jakoukoli dynamickou instrukcí. Více stop může mít stejnou počáteční instrukci, tj. Stejné počitadlo počátečního programu (PC) a instrukce z různých základních bloků podle výsledků větve. Pro výše uvedený obrázek jsou platnými stopami ABC a ABD. Oba začínají na stejném PC (adresa A) a mají různé základní bloky podle predikce D.
Stopy obvykle končí, když dojde k jedné z následujících situací:
- Trace byla naplněna povoleným maximálním počtem pokynů
- Trace má povolené maximální základní bloky
- Pokyny k vrácení
- Nepřímé větve
- Systémová volání
Informace o trasování
Jedna stopa bude mít následující informace:
- Starting PC - PC první sledované instrukce
- Příznak větve - ( maximální základní bloky -1 ) předpovědi větví
- Maska větve - počet větví ve stopě a to, zda stopa končí větví nebo ne
- Trace fall through - Next PC if last instruction is not-taken branch or not a branch
- Trasovací cíl - adresa braného cíle poslední větve
Návrh trasovací mezipaměti
Následují faktory, které je třeba vzít v úvahu při navrhování trasovací mezipaměti.
- Zásady výběru trasování - maximální počet instrukcí a maximální základní bloky ve stopě
- Asociativita - počet způsobů, jak může mít mezipaměť
- Metoda indexování mezipaměti - zřetězení nebo XOR s PC bity
- Asociativita cest - stopy se stejným počátečním PC, ale s různými základními bloky, mohou být mapovány do různých sad
- Možnosti vyplnění trasovací mezipaměti -
- Po fázi dekódování (spekulativní)
- Po odchodu do důchodu
Trasovací mezipaměť není na kritické cestě načítání instrukcí
Logika hit / miss
Stopové řádky jsou uloženy v trasovací mezipaměti na základě PC první instrukce ve stopě a sady předpovědí větví. To umožňuje ukládání různých trasovacích tras, které začínají na stejné adrese, z nichž každá představuje různé výsledky větve. Tato metoda značkování pomáhá zajistit asociativitu cesty k trasovací mezipaměti. Jiná metoda může zahrnovat pouze spuštění PC jako značky v trasovací mezipaměti. V vyzvedávání instrukcí fázi potrubí , současná PC spolu s řadou poboček předpovědí se kontroluje v trasovací vyrovnávací paměti pro hit . Pokud dojde k požadavku na server, je dodána stopová čára pro načtení jednotky, která pro tyto pokyny nemusí přejít do běžné mezipaměti nebo do paměti. Trasovací mezipaměť pokračuje v načítání jednotky načítání, dokud neskončí sledovací čára nebo dokud nedojde k chybné předpovědi v kanálu. Pokud dojde k chybě, začne se budovat nová stopa.
Mezipaměť pro provádění trasování Pentium 4 ukládá mikro-operace vyplývající z dekódování instrukcí x86 a poskytuje také funkčnost mezipaměti pro mikro-operace. Díky tomu, až bude příště potřeba instrukce, nemusí se znovu dekódovat do mikroops.
Nevýhody
Nevýhody trasovací mezipaměti jsou:
- Redundantní úložiště instrukcí mezi trasovací mezipamětí a mezipamětí instrukcí a uvnitř samotné trasovací mezipaměti.
- Energetická neefektivnost a složitost hardwaru
Mezipaměť trasování spuštění
Do mezipaměti L1 procesorů NetBurst začlenila společnost Intel svoji mezipaměť trasování provádění. Ukládá dekódované mikro-operace , takže při provádění nové instrukce místo opětovného načítání a dekódování instrukce CPU přímo přistupuje k dekódovaným mikrooperacím z trasovací mezipaměti, čímž šetří značný čas. Mikroprocesory jsou navíc ukládány do mezipaměti ve své predikované cestě provádění, což znamená, že když jsou instrukce načítány CPU z mezipaměti, jsou již přítomny ve správném pořadí provádění. Intel později představil podobný, ale jednodušší koncept se Sandy Bridge, který se nazývá mezipaměť mezipaměti (mezipaměť UOP).