SWAR, jak AI a multimédia zrychlují CPU i GPU

Koncept SWAR se bude mnohým zdát divný, ale co se stane, když vám řekneme, že jednotky SIMD vašich CPU, GPU ve vašich systémech jsou většinou typu SWAR? Tyto typy jednotek se liší od běžných jednotek SIMD a mají původ v multimediálních rozšířeních z konce 90. let. Co to je a jaké je jejich využití dnes?

Výkon procesoru lze měřit dvěma způsoby, jednak tím, jak rychle provádí instrukce v sérii, a proto je nelze paralelizovat, protože ovlivňují pouze jednotková data. Na druhou stranu ty, které pracují s několika daty a lze je paralelizovat. Tradiční způsob, jak to dělat na CPU a GPU? Jednotky SIMD, z nichž existuje podtyp, který se velmi používá v CPU a GPU, jednotky SWAR.

SWAR

ALU a jejich složitost

1 bit ALU

Než začneme hovořit o konceptu SWAR, musíme si uvědomit, že ALU jsou jednotkami a Procesor (CPU) kteří jsou zodpovědní za provádění aritmetických a logických výpočtů s různými čísly. Ty mohou růst ve složitosti dvěma způsoby, jedním ze složitosti instrukce, kterou musí provést. Vnitřní obvody ALU, které mohou provádět například výpočet druhé odmocniny, nejsou stejné jako u jednoduchého součtu.

Druhou je přesnost, s jakou pracují, tj. Počet bitů, se kterými pokaždé manipulují současně. ALU může vždy zpracovávat data stejná nebo menší než počet bitů, pro které je určena. Například nemůžeme nechat vypočítat 32bitové číslo pomocí 16bitové ALU, ale můžeme udělat opak.

Co se ale stane, když máme několik dat s nižší přesností? Normálně budou běžet stejnou rychlostí jako úplná přesnost, ale existuje způsob, jak je zrychlit, a to je nadregistrovaný SIMD. Což je také způsob, jak uložit tranzistory v procesoru.

Co je koncept SWAR?

SIMD Escalar

Nyní už mnoho čtenářů bude vědět, že se jedná o jednotku SIMD, ale my ji přezkoumáme, aby nikdo neztratil vlákno tohoto článku od začátku. Jednotka SIMD je typ ALU, kde se manipuluje s několika daty pomocí jedné instrukce současně, a proto existuje několik ALU, které sdílejí povodí toho, co je samotná instrukce, a její dekódování, ale kde v každé jiné s informací se zachází.

Jednotky SIMD se obvykle skládají z několika ALU, ale existují případy, kdy jsou ALU rozděleny na jednodušší, stejně jako akumulační registr, kde dočasně ukládají svá data pro jejich výpočet. Tomu se říká SIMD v registru nebo jeho zkratkou v angličtině SWAR, což znamená SIMD Within a Register nebo SIMD v registru.

Tento typ jednotky SIMD se velmi používá a umožňuje přesné n-bitové ALU provádět stejnou instrukci, ale s použitím dat s menší přesností. Obvykle s přesností na polovinu nebo čtvrtinu. Například můžeme 64bitovou ALU nechat působit jako dvě 32bitové ALU provedením paralelně uvedené instrukce nebo čtyřmi 16bitovými.

Zabýváte se hlouběji konceptem SWAR?

Eskalární SIMD SWAR

Tento koncept je již několik desítek let starý, ale poprvé se na PC objevily koncem 90. let, kdy se objevily jednotky SIMD v různých typech procesorů, které existovaly. Veteráni tohoto místa si budou pamatovat koncepty jako MMX, AMD 3D Now!, SSE a podobně to byly jednotky SIMD postavené podle konceptu SWAR.

Předpokládejme, že chceme postavit 128bitovou jednotku SIMD

  • V konvenčních jednotkách SIMD máme několik ALU pracujících paralelně a každá z nich má svůj vlastní datový registr nebo akumulátor. 128bitovou jednotku SIMD lze tedy tvořit ze 4 32bitových ALU a 4 32bitových registrů.
  • Místo toho je jednotka SWAR jedinou jednotkou ALU, která může pracovat s velmi vysokou přesností i se svým registrem akumulátoru. To nám umožňuje postavit jednotku SIMD pomocí jediné 128bitové ALU s podporou SWAR.

Výhoda, kterou má implementace jednotky typu SWAR oproti skalární, je snadno pochopitelná, pokud ALU neobsahuje mechanismus SWAR, který jí umožňuje pracovat jako jednotka SIMD s méně přesnými daty, pak je provede současně Rychlost. než data s nejvyšší přesností. Co to znamená? 32bitová jednotka bez podpory SWAR, pokud má pracovat se stejnou instrukcí na 16bitových datech, bude to dělat stejnou rychlostí jako 32bitová jednotka. Na druhou stranu, pokud ALU podporuje SWAR, bude schopna provádět dvě 16bitové instrukce ve stejném cyklu v případě, že obě přijdou postupně.

SWAR jako oprava pro AI

Nodo cerebro IA

Algoritmy umělé inteligence mají určitou zvláštnost, mají tendenci pracovat s daty s velmi nízkou přesností a dnes většina ALU pracuje s 32bitovou přesností. To znamená přidání přesných 16-, 8- a dokonce 4bitových ALU do procesoru, aby se tyto algoritmy zrychlily. Což má komplikovat procesor, ale inženýři se do této chyby nedostali a začali konkrétním způsobem tahat SIMD přes registr, zejména na GPU.

Je možné kombinovat konvenční ALU SIMD s designem SWAR? Ano, a to je například to, co AMD dělá ve svých GPU, kde každá z 32bitových ALU, které tvoří jednotky SIMD jejích GPU RDNA, podporuje SIMD over register, a proto ji lze rozdělit na dva 16bitové, 4 8 bitů nebo 8 ze 4 bitů.

V případě NVIDIA, dali tenzorovým jádrům břemeno zrychlení algoritmů pro AI, jedná se o systolická pole složená z 16bitových ALU s plovoucí desetinnou čárkou vzájemně propojených v tříosé matici, odtud název jednotky. Tenzor. Nejsou to jednotky SIMD, ale každá z jejich ALU podporuje SIMD over register tím, že dokáže provádět dvakrát tolik operací s 8bitovou přesností a čtyřikrát se 4bitovou přesností. V každém případě jsou jednotky Tensor důležité, protože jsou navrženy tak, aby akcelerovaly operace matice na matici mnohem vyšší rychlostí než u jednotky SIMD.