Poznámka k Moorovu zákonu a rychlosti procesorů
Potom, co rychlost procesorů začala v roce 2004 stagnovat, věřili jsme, že
stejným exponenciálním tempem poroste počet jader procesoru. Kdyby se
předpovědi vyplnily, všichni bychom teď měli stroje se stovkou jader. Z tohoto
úhlu pohledu to může zdát, jako by výkon CPU více méně stagnoval. Naštěstí to
ale není pravda. Současné generace procesorů jsou na stejné frekvenci rychlejší
než ty minulé, protože mají výrazně lepší paměťový systém a cache. Díky
tomu nemusí tolik času trávit čekáním na data z hlavní paměti a můžou
dělat něco užitečného. Současné procesory mají také výrazně širší vektorové
(SIMD) jednotky. Ty můžou vykonat v jednom taktu jednu operaci na několika
hodnotách najednou a jejich šířka se neustále zvětšuje. SSE mělo šířku 128
bitů, AVX uvedené v procesorech Sandy Bridge v roce 2011 mělo šířku 256
bitů, AVX512 plánované na rok 2015 bude mít šířku 512 bitů s
výhledem na další rozšíření v následujících letech. Každé takové zdvojnásobení
šířky může zdvojnásobit výkon vektorizovaných operací. I když i tohle
exponenciální rozšiřování má nějaký horní limit, kde přestane dávat smysl. Ale
plánovaných 512 bitů je více než dost, do každého AVX512 registru (kterých bude
k dispozici 32) se vejde 16 čtyřbajtových hodnot nebo 8 osmibajtových. Můžu
tak provést a = a + b * c
, tedy vynásobit 16 a 16 čísel a sečíst je s 16
jinými čísly v jediném taktu.
Vliv vektoriace na výkon je obrovský, ale přesto není přímo podporována v programovacích jazycích jako first class citizen.
Mimochodem v současnosti máme procesory se stovkami jader, jenom jim říkáme GPU.