Intel odhalil vnitřnosti Xeonů Phi – čip pracuje jako linuxový počítač

3. 9. 2012

Sdílet

 Autor: Redakce

Minulý týden byl na konferenci Hot Chips 2012 mezi jiným prezentován také koprocesor Xeon Phi. Tento mnohojádrový čip povstal z neblahého pokusu Intelu vytvořit GPU na bázi architektury x86. To sice nevyšlo, architektura ale našla nové uplatnění ve výpočetních kartách pro superpočítače. Xeon Phi, vyráběný nejnovějším 22nm procesem, tak bude konkurovat kartám Tesla či FirePro z dílen firem Nvidia a AMD. Podobně jako tito konkurenti je specializován na provádění masivně paralelních výpočtů.

Nejprve se podíváme na architekturu procesorových jader a poté na způsob, jakým je Intel integroval do jediného čipu. Každé jádro disponuje 512 KB L2 cache; mezipaměť první úrovně má kapacitu 32 KB pro data a stejné množství pro instrukce. Architektura je typu „in-order“ s dvěma pipeline. Jedna z nich dokáže zpracovat pouze běžné instrukce v ALU, druhá navíc podporuje instrukce x87 a vektorové instrukce pomocí jednotek FPU, respektive VPU. ALU i FPU jsou zřejmě poměrně jednoduché, a budou mít zejména podpůrnou funkci.

Jednotka VPU nepodporuje existující instrukce SIMD jakou jsou SSE či AVX, místo toho používá speciální sadu, která byla dříve známa jako „Larrabee New Instructions“. Ta mimo jiné obsahuje operace scatter/gather (jež by se v PC měly objevit s příchodem AVX2) a FMA (fused multiply-add), která dokáže s třemi čísly naráz provést ekvivalent násobení a součtu. Právě VPU a instrukce SIMD tvoří hlavní výpočetní sílu Xeonu Phi. Šířka najednou zpracovávaného vektoru je celých 512 bitů (pro srovnání – u MMX je šířka 64 bitů, u SSE 128 a u AVX 256 bitů). Jednotlivé hodnoty mohou být 32bitové nebo 64bitové, takže najednou se pracuje s 16 či 8 čísly. Zde je určité slabé místo, například multimediální operace by měly větší užitek ze zpracovávání vyššího počtu 8 či 16 bitových hodnot.

Není zcela jasné, zda často skloňované srovnání s jádrem procesoru Pentium vychází ze skutečné vývojové závislosti, nebo zda Intel vyvinul podobnou architekturu odznova (to je dle mého dosti pravděpodobné). Čip sice používá architekturu x86, logika vyžadovaná touto kompatibilitou však zabírá poměrně malý prostor (zřejmě zejména v dekodérech). Při započtení paměti cache prý tvoří obvody specifické pro architekturu x86 pouhá 2 % čipu. Kompatibilita tedy není žádným břemenem.

 

Procesor nepoužívá technologii „out of order execution“, nýbrž instrukce vykonává jednu po druhé v původním pořadí. Takové architektury (mezi jinými například Atom) ovšem trpí ztrátami výkonu, neboť velmi často nemohou zaměstnat své výpočetní jednotky. K tomu dojde tehdy, pokud nelze vykonat dvě instrukce paralelně kvůli závislosti, a také v případě, že procesor nemá k dispozici potřebná data a musí na ně čekat.

Xeon Phi tento problém řeší podobně jako Atom, a sice variací na technologii HT. Jedno jádro zpracovává paralelně čtyři vlákna (resp. mezi nimi postupně přepíná), takže pokud jedno z vláken jádro nevytíží, lze volnou kapacitu přidělit dalšímu, aniž by došlo k prostoji. Je třeba připomenout, že daní za toto řešení bude značně snížený výkon na jedno vlákno (neboť čtyři vlákna se dělí o jádro, které zpracovává nanejvýš dvě instrukce naráz). Výměnou za to však vzroste celkový výkon jádra při multi-threadingu.

Celý čip je údajně tvořen 64 jádry a neupřesněným počtem paměťových řadičů (paměť samotná je typu GDDR5). Vše je propojeno prstencovou sběrnicí, na které se nachází i logika komunikující s rozhraním PCI Express a potažmo hostitelským strojem. K sběrnici jsou jádra připojena prostřednictvím své L2 cache; zároveň ke každé z nich přísluší záznam Tag Directory. Z něj lze zjistit, zda se určitá data nacházejí v dotyčné paměti cache. Jádra tedy tyto záznamy používají pro prohledávání mezipamětí svých blízkých i vzdálených sousedů. Pokud se totiž data nacházejí v některé z pamětí cache, není je třeba zdlouhavě načítat z hlavní paměti.

Jednotliví klienti na sběrnici jsou propojení deseti linkami (respektive pěti v obou směrech). Samotná data putují po linkách o šíří 64 bytů. Zbytek tvoří užší linky pro přenos příkazů a adres a linky sloužící ke komunikaci koherenčních mechanismů. Tyto linky Intel v obou směrech zdvojil, neboť velké množství přenášených paketů (komunikuje mezi sebou téměř stovka klientů) by jinak sběrnici přetěžovalo.

Představeny byly také úsporné mechanismy Xeonů Phi. Při částečné nebo úplné nečinnosti se čip přepíná do šetrných režimů. Jednotlivá jádra se mohou přepnout do stavu C1, kdy jsou odpojena od hodinového signálu, či do stavu C6, kdy jsou odpojena i od energie (jejich L2 cache však zůstává k dispozici ostatním jádrům). Po probuzení z C6 je ovšem třeba je znovu inicializovat.

Pokud jsou všechna jádra v režimu C6, přepne se celý čip do stavu „Package C3“, kdy je odpojen hodinový signál od prstencové sběrnice i všech jejích klientů (jader i s L2 cache a tag directory, paměťových řadičů) vyjma připojení k PCI Express. Režim „Deep Package C3“ pak zredukuje i napájení. Hostitelský počítač může nadto Xeon Phi deaktivovat až do režimu „Package C6“, kdy je již napájena prakticky jen paměť GDDR5 na kartě. Opětovné probuzení však potom vyžaduje částečné resetování čipu.

Zajímavá je softwarová stránka těchto koprocesorů. Na čipu (respektive v paměti karty) totiž běží vlastní operační systém (založený na Linuxu). Ten je zřejmě zaveden hostitelským počítačem při inicializaci. Poté s ním lze komunikovat pomocí protokolu TCP-IP, jako by se jednalo o vzdálený počítač. Rozdělování a spouštění úloh tedy není řešeno prostřednictvím ovladače jako u GPU, ale v podstatě klasicky, spouštěním programu na hostovaném operačním systému.

ICTS24

V serveru s osazenými Xeony Phi tak vlastně běží klastr vnořených počítačů. K inicializaci sice potřebují pomoc hostujícího systému, jinak ale běží samostatně. Tento model znamená mnohem snazší programování ve srovnání s architekturou výpočetních GPU. Pokud se potvrdí zprávy, že Intel hodlá jednoho dne podobný koprocesor integrovat do běžných CPU, máme se myslím na co těšit.

Zdroje: Semi-Accurate, techPowerUp