Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Intel Sandy Bridge: sametová evoluce

29.9.2010, Petr Štefek, technologie
Intel Sandy Bridge: sametová evoluce
Sandy Bridge je zbrusu nová architektura Intelu, která nahradí postupně celou produktovou řadu procesorů založenou na jádrech Nehalem a Westmere. Nová architektura není pouze nudným evolučním krokem, ale o tom více už v samotném článku.
Sandy Bridge není nijak zásadně revoluční architekturou a na druhou stranu musí zmínit, že došlo k poměrně značnému navýšení tranzistorů. Když se podíváme zpět na architekturu Core, tak jsme se zde poprvé setkali s nově implementovanou logikou procesoru pod názvem LSD (Loop Stream Detector). LSD může detekovat, když procesor vykonává softwarovou smyčku a vypnout logické jednotky ve „front-endu“ procesoru pro předpovídání, odvozování a dekódování a posunout toto vykonávání na LSD. Výsledkem procesu je úspora energie a zároveň vyšší výkon při vykonávání těchto specifických opakujících se úloh.

Novinka v architektuře Sandy Bridge je tzv. „micro-op“ cache, která má za úkol ukládání dekódovaných instrukcí. Celou funkčnost neobstarává žádný pokročilý algoritmus, ale cache si jednoduše vezme dekódovanou instrukci jak leží a běží. Sandy Bridge tedy funguje na principu, kdy hardware zkontroluje, zda je instrukce přítomna v „micro-op“ cache a pokud ano, obstará zbytek pipeline a front end procesoru vypne. Dekódovací logika procesoru je velice komplexní část x86 pipeline a jejím vypnutím je docíleno značné úspory energie a příkonu samotného CPU. Je velice pravděpodobné, že se tento princip časem objeví i mimo high-endovou platformu Intelu pro desktopy a zamíří směrem k mobilním platformám, kde bude přínos této technologie ještě markantnější.



Samotná micro-op cache je přímo přístupná a může uložit přibližně 1500 mikro-operací, což je svou efektivitou ekvivalentní 6 KB instrukční cache. Micro-op cache je součástí L1 cache a bude využívána naprostou většinou aplikací (Intel odhaduje 80%). Samotná L1 instrukční a datová cache zůstávají stále na kapacitách 32 KB, což dává dohromady pro celou L1 cache rovných 64 KB. Zakomponováním micro-op cache získáme o něco konzistentnější datový tok, než v případě samotné instrukční cache, což je opět žádoucí pro efektivitu a vysoký výkon.

Jak už bylo zmíněno výše, tato cache ukládá všechny dekodované mikro instrukce (netřídí ani nijak jinak neodděluje), a tak bychom ji mohli s trochou nadsázky označit za hloupou, neboť uložené instrukce se smazají tehdy, když dojde místo v cache podle toho, v jakém pořadí byly do cache uloženy. Může tento fakt způsobit ve specifických aplikacích problémy? Pravděpodobně jen v takových, s kterými se běžně nesetkáme.

Pokud se podíváme hodně nazpět na architekturu NetBurst (Intel Pentium 4), najdeme zde určité podobnosti. U této architektury to byla tzv. trace cache, která ovšem měla ještě poněkud rozšířenou funkčnost. Funkčnost je podobná jako u instrukční cache, která ovšem místo makro operací (řadíme zde x86 instrukce) ukládá mikro instrukce (micro-ops). Větší detaily se pravděpodobně dozvíme až po uvedení procesorů od některého z hardwarových guru.

Další novinkou je kompletní redesign BPU (Branch Prediction Unit), která je nyní podstatně přesnější. Intel prohlašuje, že tento fakt mají za následek tři hlavní inovace.

Standardní Branch Predictor (česky řečeno předpovídač) je 2bitová jednotka, která každou větev ve zpracovávaném kódu označí v tabulce dvěma parametry, jež označují, zda se bude s daty dále a pracovat a jak. Nejdůležitější k zapamatování je, že Sandy Bridge je bimodální predictor, který využívá svůj 1bit (jednotka je 2bitová) o úrovni přesvědčení, zda se bude operace opakovat či nikoli pro vícero větví současně a ne pro jednu každou, jak by si bylo možné domýšlet. Výsledkem je, že hodnota (strong/weak) uložená v 1 bitu pro více větví vede ve výsledku k větší přesnosti (v tabulce s hodnotami jsou uloženy informace o větším počtu větví).



Když už zmiňujeme stále dokola větve (branches), měli bychom si říct, že se obvykle jedná o programy napsané ve strojovém kódu nebo assembleru (low-level programovací jazyk). Nyní se je ještě dobré podívat na tzv. Branch Target Predictor, což je něco jiného (i přes podobný název) než Branch Prediction.

BTP měl v minulé architektuře tzv. targets (cíle) omezeny na jedinou možnou velikost, jelikož se vycházelo z předpokladu, že všechny targets jsou v rámci datové struktury velmi blízko sebe (v praxi tomu tak nebylo). Sandy Bridge dovoluje nově adresovat targets (v rámci větví) s různou velikostí, což je mnohem lepší než druhý případ, kdy by adresovalo cíle, které jsou od sebe příliš vzdálené, ale mají stejnou velikost. Menší velikosti cílů uspoří místo v cache a zároveň dovolí sledovat více cílů a zvýšit rychlost predikce.

Kromě chytřejších metod predikce a její přesnosti Intel zařadil do evoluce také poměrně přímočarou konvenční metodu, která spočívá ve větším množství bitů pro sledování historie v rámci predikce. Více bitů k dispozici znamená samozřejmě více informací. To není samospásné a funguje to efektivně pouze u větví, které obsahují dlouhé sady instrukcí. Naopak je to tehdy, pokud se v kódu objeví mnoho jednoduchých větví typu loop (smyčka) nebo podmínky if/else.