Intel "Sandy Bridge" versus AMD "Bulldozer" okem tvůrce VirtualDubu
Avery je právě ve fázi, kdy přemýšlí o upgradu svého již hodně dýchavičného desktopu (Socket 754 AMD64), přičemž náhradou má být právě něco na bázi Intel "Sandy Bridge". Aktuální notebook nese sice Core i7, ale ještě generace "Nehalem", takže nejvyšší instrukční sadou, kterou má Avery v tuto chvíli doma k dispozici, je SSE 4.2 (my se pouze můžeme do prázdna zeptat, proč Intel a AMD nemohou vždy s chystanou novou generací poslat dopředu CPU + základní desku, vždyť raná podpora jejich produktů ve VirtualDubu by pro ně jistě byla přínosem).
Avery se tedy opětovně podrobně podíval na AVX instrukce a bohužel trochu posmutněl. Hlavním neduhem pro jeho specifické užití je právě ryze floating-point povaha AVX první generace. AVX používá 256bitové vektory místo 128bitových, takže sice umí zpracovat 2× tolik z hlediska "průtoku dat", nicméně většina dat, s nimiž Avery pracuje, je v bytech (bajtech) - 32bit float tak reálně znamená pokles "průtoku" na čtvrtinu.
Obecně nelze najít moc flexibility na konverzi z/do integer formátů. Operace v plovoucí čárce pak mají obecně vyšší latence, konzumují více paměti a tudíž potřebují i vyšší paměťovou propustnost. Navíc je náročnější bezpečně nakládat s adresami v plovoucí čárce (není to nemožné, ale led, po kterém programátor chodí, je výrazně tenčí než pro integer). Nelze používat algoritmy vyžadující komutativní přidávání a ubírání, operace průměru stojí více prostředků a tak by se dalo pokračovat.
Na druhou stranu má pochopitelně hypotetický přechod na vektorové plovoucí typy i své výhody. Například dělení či odmocninu, či automatické mírné zaokrouhlování při každé operaci, kdy je správa chyb a zaokrouhlování v integer logice značně nepříjemnější. Obecně pak lze říci, že algoritmy se ve vektorové plovoucí logice implementují podstatně snadněji.
Vše se dá shrnout tak, že věci umí běžet s 256bitovými vektory rychleji, ale nutnost nejprve data konvertovat z toho ve výsledku udělá výpočet pomalejší.
Averymu se pro jeho využití daleko více líbí SSE5/XOP instrukce, které ponesou procesory "Bulldozer", nicméně jak jsme si již psali v minulosti, AMD umí i dobré věci ukončit, a to není vhodné pro aplikaci, která na to spoléhá. Tak jako nebyl kdysi Avery nadšen z instrukční sady Intel SSE, tak se mu líbila konkurenční AMD 3D Now! a nevypadá to, že by XOP stihl výrazně lepší osud. Navíc zatím vůbec nevíme, jak rychlá bude implementace v "Bulldozeru", bavíme se v čistě teoretické rovině. Podle Averyho to nevypadá, že by XOP byly rozšířeny na 256 bitů, což je do budoucna nevýhodou.
Naproti tomu s procesory "Haswell" přijde AVX2, které řadu neduhů (z Averyho hlediska) vyřeší (256bit integer, FMA, další instrukce pro manipulaci s bity i vektory), navíc je klidně možné, že v případě ne úplně dobré implementace XOP v procesorech AMD bude AVX2 rychlejší.