Mélyvíz: párhuzamosítás és optimalizálás az Intel jövőképében

Hirdetés

Intel processzorok ma

A processzorok fejlődésének útja nagyon sokáig az egy szálon elérhető teljesítmény növeléséről szólt. Ennek legkézenfekvőbb megoldása az órajel növelése volt, azonban egy bizonyos határnál már nem éri meg vagy egyszerűen nem megoldható a további emelés (bár az Intel kutatólaboratóriumában volt 10 GHz-en üzemelő processzor is, mint az kiderült egy másik előadáson). Ekkor fordultak a többprocesszoros és többmagos, később többszálú (HT, azaz HyperThreading) megoldások felé. Ezek viszont új programozói hozzáállást is igényelnek, mivel az ilyen típusú processzorokat többszálú programokkal lehet jól kihasználni. Tehát, ha a gondolkodásunkat és a kódunkat hozzáigazítjuk az adott platformhoz és a processzor(ok)hoz, akkor megtarthatjuk az alkalmazások teljesítménynövekedésének ütemét.

Nézzük, miből gazdálkodnak most a szerencsés programozók! Az új Xeonok a nehéztüzérségnek számítanak (Xeon v2): maximum 12 mag, 2,0-3,4 GHz-es órajel, HyperThreading, óriási L3 cache (10-30 MB) és 128-256 bites SIMD. A Xeon Phi ezzel szemben 50-61 mag, 1-1,25 GHz, négyszálú HyperThreading és 512 bites SIMD. Utóbbinál még jobban látszik a tendencia a párhuzamosítás irányába. Ami szintén érdekes – de érthető –, hogy az egyes magokon elérhető memória-sávszélesség csökken.

Az Intel Xeon Phi
Az Intel Xeon Phi

Victor Lee két fő csapásirányt nevezett meg: a lehető legjobb párhuzamosítást és az adatok leghatékonyabb kezelését. Az első a párhuzamosan végrehajtható utasításokkal, a „többszálúsítással” és a több mag kihasználásával operál, míg a második az, ami kicsit nagyobb elmélyedést igényel a processzor lelkivilágában. Itt jön be a memóriavezérlők csatornánkénti és/vagy magonkénti sávszélessége és az L1, L2 és L3 gyorsítótárak (cache) megfelelő kihasználása. Igaz, hogy egyelőre a cache működésébe nem nagyon lehet beleszólni, de rebesgetnek valamit egyfajta cacheQoS-ről is. Per Hammarlund (többek között a Haswell főtervezője) erről azt mondta, hogy a cache működését a mostani tipikus számítási feladatokhoz optimalizálták, és az esetek 99 százalékában meg is felel a programozóknak.

Létezik azért többszintű prefetch utasítás is, és az Intel C fordítója (ICC) is támogat már elég sok cache-sel kapcsolatos beállítást. Ebből a szempontból a GNU C fordítója (GCC) érthetően le van maradva, de állítólag nagyon jó munkát végeznek úgymond reverse engineeringben, tehát várható, hogy előbb-utóbb felbukkannak hasonló beállítási lehetőségek ott is.

A cikk még nem ért véget, kérlek, lapozz!

  • Kapcsolódó cégek:
  • Intel

Azóta történt

Előzmények