funkcionálně.cz

Přední český blog o funkcionálním programování, kde se o funkcionálním programování nepíše
««« »»»

Poznámka k Moorovu zákonu a rychlosti procesorů

7. 11. 2013

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.

@kaja47, kaja47@k47.cz, deadbeef.k47.cz, starší články