Hlavní stránka Hardware Procesory, paměti Jak moderní procesory obešly svoje výkonové limity
Jak moderní procesory obešly svoje výkonové limity
autor: Michal Rybka , publikováno 11.1.2020
Jak moderní procesory obešly svoje výkonové limity

Pro mnoho lidí je posledních dvacet pět let vývoje procesorů spíše fází stagnace. Navyšovaly se kmitočty, zvyšoval se počet jader – a to je tak všechno, říkají. Není to pravda, naopak: S tím, jak začaly procesory narážet na fyzikální limity, začali jejich architekti obcházet hranice chytrým designem. Často jsou to dost fascinující triky!


Vnitřně jsou moderní procesory hodně nepodobné svým předchůdcům, a dokonce se mění jejich vnitřní strategie, které se týkají například spekulativního provádění instrukcí. To je hodně velká magie, která slouží k tomu, aby procesor správně odhadl, kam se bude v podmínkách skákat a co se bude dělat dál. Každý špatně odhadnutý skok vede k tomu, že se celý proces tak trochu zadrhne, věci se vyhodí a dělají se znova – pokud se ale s predikcí trefíte, běží to jako blesk. A predikce se dělat dají – klasickým příkladem jsou cykly, kde v cyklu, který vykonáváte například 100×, máte mnohem větší šanci, že se vrátíte na začátek, než že cyklus opustíte. Správná identifikace cyklů je důležitá, dokonce se to dělá i na úrovni mikroinstrukcí.

Spekulativní vykonávání instrukcí může, samozřejmě, přinést problémy, jak ukázaly bezpečnostní slabiny Spectre anebo Meltdown. Často využívají techniky, které jsou tak trochu obcházení ochranných mechanismů, například s pomocí časování hádají, co se dělalo v zóně, do které nevidí a z toho odvozují obsah. Proto se tomu říká slabina a nikoli chyba, jakou byla například klasická chyba v FPU jednotkách prvních Pentií – FDIV Bug, která ve finále stála Intel 475 milionů USD.

Jinou – a do jisté míry opačnou optimalizací je hyperthreading. V podstatě jde o emulaci dvoujádrového procesoru na jednom jádru tak, že můžeme rychle přepínat kontexty threadů. Když použiji podobný příklad jako dříve, trochu se to podobá pokladnímu, který zároveň obsluhuje současně dva zákazníky, kteří vyrovnávají na pásy pomalu zboží tak, že se pokladní otáčí z jedné strany na druhou a markuje do dvou pokladen. Protože je rychlejší než oni a má k dispozici dva kontexty, z pohledu pomalých zákazníků to vypadá jako dvě pokladny. Tato akcelerace nefunguje vždycky, ale je to jeden z triků, které moderní procesory mohou využívat.

Do podobné kategorie patří i register renaming, což je taky hodně vychytaný trik. Podobně jako u instrukcí je umí řízení přerovnat tak, aby vytížilo jednotlivé jednotky procesoru, přejmenovávání registrů funguje tak, že si řízení všimne, že i když program chce používat ty samé registry, ve skutečnosti operace na nich se nijak neovlivňují. Kupříkladu do A načtu hodnotu z paměti a přičtu pětku, to uložím a pak do A načtu jinou hodnotu, přičtu jiné číslo a zase to uložím. Tyto dvě operace, přestože žádají použití stejného registru, se ve skutečnosti neovlivňují ničím jiným, než že chtějí používat ten samý registr, takže procesor může udělat to, že pro druhou operaci použije jiný registr (přejmenuje ho) a obě operace provede najednou.

Kdybych měl architekturální vylepšení moderních procesorů k něčemu přirovnat, tak je to něco jako by program psalo tvrdohlavé děcko žádající udělat věci krok za krokem, jednu po druhé, a v určitém prostředí – ale jeho nedočkavý rodič ty operace přerovná, paralelizuje a provede je najednou, protože na rozdíl od děcka ví, co se najednou opravdu udělat dá a umí je roztřídit na ty, kde se musí čekat a na to, co se dá udělat hned, případně souběžně. Je to inteligence ukrytá přímo v silikonu, která umí zrychlit i ten kód, který není vytvořený zrovna optimálně. A ještě lepší je to, že tato inteligence je vytvořená pro každý silikon zvlášť, takže dokáže zajistit optimální výkon na prostředcích, které má zrovna k dispozici, aniž by se kód musel měnit.

Mimo to, že se do moderních procesorů integroval velmi pokročilý power management a dynamický overclocking, což jsou príma servisní funkce, nabízející jak maximální výkony, tak i vysokou efektivitu, přibyla mezi lety 1995 a dneškem neuvěřitelná sada rozšíření instrukční sady x86. Neuvěřitelná. Každý si asi vybaví instrukce SSE anebo AES, které akcelerují kryptografické operace, ale co takhle třeba kompletní kryptografická ochrana paměti, kdy vše, co je mimo procesor samotný, je kryptograficky chráněné?



 
Komentáře naleznete na konci poslední kapitoly.
219 čtenářů navrhlo autorovi prémii: 102.3Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.