Mikrooperace - Micro-operation

Ilustrace na vysoké úrovni ukazující rozklad strojních instrukcí na mikro-operace prováděné během typických cyklů načítání-dekódování-spuštění

V počítačových centrálních procesorových jednotek , mikro-operace (také známý jako mikro-ops nebo μops , historicky také jako mikro-actions ), podrobný návod nízkoúrovňové používané v některých návrhů realizovat komplexní strojové instrukce (někdy nazývané makro-instrukce v tomto kontext).

Obvykle, mikro-operace provádět základní operace s daty uloženými v jedné nebo více registrů , včetně přenosu dat mezi registry nebo mezi registry a externí autobusy z centrální procesorové jednotky (CPU) a provádění aritmetických nebo logických operací v registrech. V typickém cyklu načtení-dekódování-provedení je každý krok makro-instrukce rozložen během jejího provádění, takže CPU určí a provede řadu mikro-operací. Provádění mikrooperací se provádí pod kontrolou řídicí jednotky CPU , která rozhoduje o jejich provádění při provádění různých optimalizací, jako je přeskupování, fúze a ukládání do mezipaměti.

Optimalizace

Různé formy μops byly dlouho základem tradičních rutin mikrokódu používaných ke zjednodušení implementace konkrétního designu CPU nebo snad jen k sekvenování určitých vícestupňových operací nebo režimů adresování. V poslední době byly μops také použity jiným způsobem, aby moderní CISC procesory mohly snáze zpracovávat asynchronní paralelní a spekulativní provádění: Stejně jako u tradičního mikrokódu se provádí jedno nebo více vyhledávání tabulek (nebo ekvivalentů) k vyhledání příslušných μop- sekvence založená na kódování a sémantice strojové instrukce (krok dekódování nebo překladu), místo toho, aby tuhé sekvence μop ovládaly CPU přímo z mikrokódu ROM , μops jsou zde dynamicky ukládány do vyrovnávací paměti pro přeplánování před provedením.

Toto ukládání do vyrovnávací paměti znamená, že fáze načítání a dekódování lze více oddělit od prováděcích jednotek, než je to možné v tradičnějším mikrokódovaném (nebo pevném) provedení. Protože to umožňuje určitý stupeň volnosti, pokud jde o pořadí provádění, umožňuje to nějakou extrakci paralelismu na úrovni instrukcí z normálního jednoprocesového programu (za předpokladu, že jsou kontrolovány závislosti atd.). Otevírá se pro další analýzu, a tedy i pro přeskupení sekvencí kódu za účelem dynamické optimalizace mapování a plánování μops na prostředky stroje (jako jsou ALU , jednotky načítání / ukládání atd.). Jelikož se to děje na úrovni μop, dílčí operace různých strojových (makro) instrukcí se mohou často smíchat v konkrétní μop-sekvenci, čímž se vytvoří částečně přeuspořádané strojové instrukce jako přímý důsledek mimosmyslového odeslání mikroinstrukcí z několika pokyny pro makro. To však není totéž jako fúze mikro-op , která se zaměřuje na skutečnost, že složitější mikroinstrukce může v určitých případech nahradit několik jednodušších mikroinstrukcí, obvykle za účelem minimalizace změn stavu a využití fronty a opětovného uspořádání vyrovnávací prostor, čímž se snižuje spotřeba energie. Micro-op fúze se používá v některých moderních designech CPU.

Optimalizace provádění zašla ještě dále; procesory nejen převádějí mnoho strojových pokynů do řady μops, ale v případě potřeby také dělají opak; kombinují určité sekvence strojových instrukcí (jako je srovnání následované podmíněným skokem) do složitějšího μop, který lépe vyhovuje modelu provádění, a proto je lze provést rychleji nebo s méně zapojenými prostředky stroje. Toto je také známé jako fúze makro-op .

Dalším způsobem, jak se pokusit zlepšit výkon, je uložit do mezipaměti dekódované mikrooperace, takže pokud se znovu provede stejná makroinstrukce, procesor může přímo přistupovat k dekódovaným mikrooperacím ze speciální mezipaměti, místo aby je znovu dekódoval. Execution Trace Cache najdete v Intel NetBurst mikroarchitektuře ( Pentium 4 ) je rozšířený příkladem této techniky. Velikost této mezipaměti lze určit z hlediska toho, kolik tisíc (nebo přesně více než 1024) mikrooperací může uložit: Kμops .

Viz také

Reference