iPon Hírek

QMD: hatékonyabb szoftverfuttatás többmagos processzorokon

Dátum | 2016. 11. 02.
Szerző | J.o.k.e.r
Csoport | SZOFTVER

A több processzormaggal ellátott központi egységek már évek óta jelen vannak a piacon, a rendelkezésre álló processzormagok száma pedig egyre csak növekszik, így már akár 10 magos asztali processzort is vásárolhatunk – a szerverpiacon pedig tíznél több CPU maggal ellátott központi egységek közül is lehet válogatni. A több processzormag elméletben nagyobb teljesítményt jelent, hiszen így egyidejűleg több programszálon dolgozhat a rendszer, de az erőforrások hatékony kiaknázása már egy másik történet, hiszen ehhez komoly tervezésre és odafigyelésre van szükség, már ami a dolog szoftveres oldalát illeti. Nem mindegy, hogy a feladatokat, illetve feladatrészeket hogyan bontják szét a processzormagok között, valamint az sem mindegy, hogy az egyes CPU magok közötti kommunikáció miként alakul – legalábbis az IEEE kutatói így látják. A kihívás leküzdése tehát nem könnyű, de azért van már fény az alagút végén, ugyanis az Intel kutatói együttműködésbe léptek az Észak-Karolina Állami Egyetem szakembereivel, így már tudják, merre érdemes elindulni a processzormagokban rejlő lehetőségek minél hatékonyabb kiaknázásához: szükség van egy új hardverkomponensre, amely a QMD nevet viseli.
A QMD, azaz Queue Management Device dióhéjban annyit tesz, hogy a szokásos szoftveres feladatkiosztást saját hatáskörbe veszi át, így a processzormagokat maga a QMD látja el feladattal. A QMD precízen koordinálja a processzormagok közötti adatelérést és adatfelhasználást, ami nagyon komoly előnyökkel kecseget. Az IEEE (Institute of Electrical and Electronics Engineers) kutató szerint a QMD segítségével a processzormagok közötti kommunikáció sebessége a szoftveres feladatkiosztáshoz képest megduplázható, így bizonyos feladattípusokat sokkal hatékonyabban lehet elvégeztetni az adott rendszerrel. Például a QMD-vel kiegészített processzor segítségével a hálózati forgalom feldolgozása nagyobb sebesség mellett történhet, plusz a szoftver is sokkal jobban skálázódhat, hiszen több processzormagot tud hatékonyan munkára fogni. Meglehetősen beszédes adat az is, hogy egy 16 magos processzorral szerelt rendszernél a QMD használatával 20x teljesítménynövekedés érhető el ahhoz képest, mint ha egyszerűen szoftveres alapokon történne a feladatkiosztás. Ez a módszer néhány feladattípus esetén különösen jól jöhet – ilyen például a MapReduce programozási modell. Noha a fenti eredmények komoly bizakodásra adhatnak okot, feltétlenül érdemes kiemelni, hogy egyelőre csak szoftveres szimulációval térképezték fel a QMD-ben rejlő lehetőségeket, nem valós hardverrel, így a valós tesztkörnyezetben folytatott mérések a fentiektől némileg eltérő eredményeket adhatnak majd. Az Intel illetékeseit mindenképpen felvillanyozta a téma, ugyanis az új technológiában komoly lehetőségeket látnak. Az ötlet egyébként egy diák, Yipeng Wang fejéből pattant ki, akit az Intel már fel is vett a kötelékébe. Hogy a QMD mikor kaphat szerepet „kézzel fogható” termékekben? Idővel ez is kiderül. Az biztos, hogy a technológia fejlesztése egyelőre nagyon korai stádiumban van, így a közeljövőben még nem valószínű, hogy szerephez juthat a következő generációs processzorokban.
Új hozzászólás írásához előbb jelentkezz be!

Eddigi hozzászólások

11. I.Jozsef83
2016.11.02. 15:54
az Intel kutatói együttműködésbe léptek az Észak-Karolina Állami Egyetem szakembereivel, így már tudják, merre érdemes elindulni a processzormagokban rejlő lehetőségek minél hatékonyabb kiaknázásához

mekkora véletlen ... hát merre volna érdemes elindulni ? amerre $ & € millió hegyek vannak
----------------------------------

Meglehetősen beszédes adat az is, hogy egy 16 magos processzorral szerelt rendszernél a QMD használatával 20x teljesítménynövekedés érhető el ahhoz képest, mint ha egyszerűen szoftveres alapokon történne a feladatkiosztás.

De akkor igaz ez 4 , 6 , 8 magos procikra is !

Hajrá - hajrá , nagyon itt az ideje hogy a többmagos procik legyenek már előtérbe is rendesen kihasználva is .
 
Válasz írásához előbb jelentkezz be!
10. Wines
2016.11.02. 16:11
Vagyis az OS egy procit fog látni, ami virtuálisan rohadt gyors, vagy csak nem ő határozza meg, hogy melyik process melyik magon fut?
 
Válasz írásához előbb jelentkezz be!
9. Balucsek
2016.11.02. 16:22
Ez a 20x-os teljesítmény növekedés jól hangzik, de ha jól olvasok az apró betűk közt ez csak magára a feladat kiosztásra vonatkozik, és ez gondolom továbbra is csak a proci terhelésének töredékét teszi ki.
 
Válasz írásához előbb jelentkezz be!
8. zorrd023
2016.11.02. 20:11
Eddig is lehetett volna pl egy külön procival vagy processzormaggal megoldani, hogy az csak a feladat kiosztás és kommunikációt segíti. De hát szeretnek a végek minden szaron spórolni. Így nem igen látom a spanyol viasz feltalálását ebben a hírben. ( Na meg az olyan feladat ami nem párhuzamosítható azzal még mindig csak a minél erősebb mag tud végezni leghamarabb. )
 
Válasz írásához előbb jelentkezz be!
7. Whysper I.Joz...
2016.11.03. 10:06
Ezzel csak az a baj ,hogy rengeteg mostani gépben lévő többmagos CPU-k nem fogják tudni kihasználni így.
 
Válasz írásához előbb jelentkezz be!
6. leviske I.Joz...
2016.11.03. 11:58
Már miért lenne igaz a 4,6,8 magos processzorokra? Ezekre megoldható szoftveresen is az egyenletes feladatmegosztás. 10+ magnál már ez kicsivel távolabb van, ha egyáltalán esély van arra, hogy foglalkozzanak a fejlesztők vele. Erre lehet ideális a hardveres megoldás.
 
Válasz írásához előbb jelentkezz be!
5. thedevelop...
2016.11.03. 14:00
Gondolom ez segítene a több socket-es rendszereken is. Például 4 socket, foglalatonként egy-egy, egyenként 28 magos (56 szálon dolgozó) processzor...
224 szálat, cpu interconnect-en átívelően elég nehéz koordinálni.
 
Válasz írásához előbb jelentkezz be!
4. dzsuz87 zorrd...
2016.11.03. 14:38
A thread-ek inicializálását és a használat utáni eltakarítását a jelenlegi C és C++ fordítókat bevetve elég gyászos az eredmény. Ha egy thread (mi a jó magyar szó rá?) nem számol kb 1 millió alapműveletet, akkor nem is érdemes leválasztani a program fő száláról. Sok esetben pedig ennél rövidebb thread-ek lennének kézenfekvőek. Ezzel együtt a thread-ek közötti adatmegosztás is mérsékelhető lenne, ami szintén segíti az optimálisabb működést. Nem tudom, sikerült-e érthetően leírnom, kérdezz, ha valami nem világos.
 
Válasz írásához előbb jelentkezz be!
3. BiroAndras dzsuz...
2016.11.03. 15:09
Erre való a Thread Pool. Nem kell minden aprósághoz új szálat létrehozni, csak kiveszel egyet az unatkozók közül, és használat után visszateszed.
A probléma nem ez, hanem a feladatok párhuzamosítása és a szinkronizáció. Sokszor egy több szálon futó rogramot teljesen másképp kell megírni, sőt lehet hogy más algoritmus lesz az optimális. Ezen a hardver nem hiszem hogy tud segíteni.
A másik probléma, hogy a közösen használt erőforrásokhoz egyszerre csak egy férhet hozzá, különben csúnya dolgok történnek. Ennek a logisztikája nagyon bonyolult tud lenni, és sok mag esetén komolyan limitálhatja a teljesítményt. Hiába van 16 mag a gépben, ha az idő nagy részét sorban állással töltik. Ennek megoldására is vannak trükkök, de azok még sokkal nehezebbek.
 
Válasz írásához előbb jelentkezz be!
2. fofoka
2016.11.03. 20:29
"...QMD segítségével a processzormagok közötti kommunikáció sebessége a szoftveres feladatkiosztáshoz képest megduplázható...

...egy 16 magos processzorral szerelt rendszernél a QMD használatával 20x teljesítménynövekedés érhető el ahhoz képest, mint ha egyszerűen szoftveres alapokon történne a feladatkiosztás."

Szóval ez a QMD kétszeresére gyorsítja a magok közti kommunikációt (és csak azt, a magokat nem), aminek az az eredménye, hogy egy QMD-vel felvértezett 16 magos proci 20x gyorsabb lesz. Bocs, de nekem nem jön át ez a matek.
 
Válasz írásához előbb jelentkezz be!
1. fofoka thede...
2016.11.03. 20:31
@ thedeveloper: ha jól értem, ezt processzorba akarják integrálni, így a socketek közti kommunikáció még mindig szoftverből fog menni.
 
Válasz írásához előbb jelentkezz be!