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 (před 6 lety) — k47

Potom, co rych­lost pro­ce­sorů začala v roce 2004 stag­no­vat, věřili jsme, že stej­ným ex­po­nen­ci­ál­ním tempem po­roste počet jader pro­ce­soru. Kdyby se před­po­vědi vy­pl­nily, všichni bychom teď měli stroje se stov­kou jader. Z tohoto úhlu po­hledu to může zdát, jako by výkon CPU více méně stag­no­val. Na­štěstí to ale není pravda. Sou­časné ge­ne­race pro­ce­sorů jsou na stejné frek­venci rych­lejší než ty minulé, pro­tože mají vý­razně lepší pa­mě­ťový systém a cache. Díky tomu nemusí tolik času trávit če­ká­ním na data z hlavní paměti a můžou dělat něco uži­teč­ného. Sou­časné pro­ce­sory mají také vý­razně širší vek­to­rové (SIMD) jed­notky. Ty můžou vy­ko­nat v jednom taktu jednu ope­raci na ně­ko­lika hod­no­tách na­jed­nou a jejich šířka se ne­u­stále zvět­šuje. SSE mělo šířku 128 bitů, AVX uve­dené v pro­ce­so­rech Sandy Bridge v roce 2011 mělo šířku 256 bitů, AVX512 plá­no­vané na rok 2015 bude mít šířku 512 bitů s vý­hle­dem na další roz­ší­ření v ná­sle­du­jí­cích letech. Každé takové zdvoj­ná­so­bení šířky může zdvoj­ná­so­bit výkon vek­to­ri­zo­va­ných ope­rací. I když i tohle ex­po­nen­ci­ální roz­ši­řo­vání má nějaký horní limit, kde pře­stane dávat smysl. Ale plá­no­va­ných 512 bitů je více než dost, do kaž­dého AVX512 re­gis­tru (kte­rých bude k dis­po­zici 32) se vejde 16 čtyř­baj­to­vých hodnot nebo 8 os­mi­baj­to­vých. Můžu tak pro­vést a = a + b * c, tedy vy­ná­so­bit 16 a 16 čísel a sečíst je s 16 jinými čísly v je­di­ném taktu.

Vliv vek­to­ri­ace na výkon je ob­rov­ský, ale přesto není přímo pod­po­ro­vána v pro­gra­mo­va­cích ja­zy­cích jako first class ci­ti­zen.


Mi­mo­cho­dem v sou­čas­nosti máme pro­ce­sory se stov­kami jader, jenom jim říkáme GPU.

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