15Aug
A gazdaságos fogyasztói minőségű többmagos processzorok megjelenése számos felhasználó számára felvetette a kérdést: hogyan hatékonyan számolhatja ki a többmagos rendszer valós sebességét? Van egy 4 magos 3Ghz rendszer valóban 12Ghz? Olvass tovább, ahogy vizsgáljuk.
A mai kérdés &A válaszüzenet a SuperUser - a Stack Exchange, a Q & A weboldalak közösségmegosztási csoportjának - részlegének köszönhető.
Az
SuperUser olvasó kérdése NReilingh kíváncsi volt arra, hogyan számolják ki a processzor sebességét többmagos rendszer esetén:
Helyes például mondani, hogy egy processzor, négy maggal mindegyik 3GHz-en fut, valójában egy processzor fut12 GHz-en?
Egyszer "Mac vs. PC" érvelésbe kerültem( ami egyébként nem a témában van. .. ez visszatért a középiskolába) egy ismerősével, aki ragaszkodott hozzá, hogy a Mac-eket csak 1Ghz gépekként reklámozzák, mertkettős processzoros G4-ek mindegyike 500MHz-en fut.
Abban az időben tudtam, hogy ez a hogwash olyan okok miatt, amelyek szerint a legtöbb ember számára nyilvánvaló, de láttam egy megjegyzést ezen a weboldalon a "6 mag x 0.2GHz = 1.2Ghz" hatására, és ez újra meggondoltahogy van-e valódi válasz erre.
Tehát ez többé-kevésbé filozófiai / mély technikai kérdés az órajelsebesség számításának szemantikájáról. Két lehetőséget látok:
- Minden mag valójában x számításokat végez másodpercenként, így a számítások teljes száma x( mag).
- Az órajel sebessége inkább annak a számának a száma, amelyet a processzor egy másodpercen belül átmegy, tehát amíg minden mag ugyanolyan sebességgel fut, az egyes óraciklusok sebessége ugyanaz marad, függetlenül attól, hogy hány magotlétezik. Más szóval, Hz =( core1Hz + core2Hz +. ..) / magok.
Szóval mi a megfelelő módja annak, hogy az összes órajelet megnevezzük, és még fontosabb, hogy egy magos sebességnómenklatúrát használhatunk egy többmagos rendszeren?
Az
válaszú SuperUser-hozzászólók A Mokubai segíti a dolgok tisztázását.Így írja:
A legfontosabb ok, amiért egy négymagos 3GHz processzor soha nem olyan gyors, mint egy 12 GHz-es egyetlen mag, az a processzoron futó feladat, azaz egyszálú vagy többszálú.Amdahl törvénye fontos, amikor figyelembe vesszük a futó feladatok típusát.
Ha van olyan feladata, amely eredendően lineáris, és pontosan lépésről-lépésre kell eljárni, mint pl.( Egy nagyon egyszerű program)
10: a = a + 1 20: goto 10Akkor a feladat nagymértékben függ az eredménytőlés nem tudja több példányt futtatni önmagának anélkül, hogy az "a" értékét megsértené, mivel minden egyes példány az "a" értékét különböző időpontokban kapja meg, és másképpen írja le. Ez a feladatot egyetlen szálra korlátozza, és így a feladat csak egyszerre futhat egyetlen magon, ha többféle magra futtatná, akkor a szinkronizálás megtörténne. Ez korlátozza a kettős magrendszer teljesítményének 1/2 -es értékét, vagy 1/4 négymagos rendszerben.
Most hajtson végre egy olyan feladatot, mint például:
10: a = a + 1 20: b = b + 1 30: c = c + 1 40: d = d + 1 50: goto 10Mindegyik sor független,4 különböző programra oszthatók, mint az első, és ugyanabban az időben futnak, mindegyik képes kihasználni az egyik mag teljes erősségét szinkronizálási probléma nélkül, itt jön be Amdahl törvénye.
Tehát, ha van egy szálas alkalmazásunk, amely a brute force számításokat végzi, akkor az egyetlen 12 GHz-es processzor nyerni fogja a kezét, ha valahogy fel tudja osztani a feladatot különálló részekre és többszálas, akkor a 4 mag magához térhet,, ugyanaz a teljesítmény, mint Amdahl törvénye.
A legfontosabb dolog, amit egy multi processzorrendszer nyújt Önnek, az érzékenység. Egy keményen működő egyetlen gépen a rendszer lassúnak tűnhet, mivel az idő nagy részében egy feladat használható, és a többi feladat csak rövid idő alatt fut a nagyobb feladat között, ami lassúnak vagy ítélőképesnek tűnik. Egy többmagos rendszeren a nehéz feladat egy magot kap, és az összes többi feladat a többi magot játssza, gyors és hatékony munkát végez.
A "6 mag x 0.2GHz = 1.2Ghz" argumentum minden helyzetben hulladék, kivéve ha a feladatok tökéletesen párhuzamosak és függetlenek. Számos olyan feladat van, amelyek nagyon párhuzamosak, de még mindig szükség van valamilyen szinkronizálásra. A kézifék egy video trancoder, amely nagyon jó az összes rendelkezésre álló CPU használatánál, de ehhez egy magfolyamra van szükség ahhoz, hogy a többi szálat megtöltse az adatokkal, és összegyűjtse azokat az adatokat, amelyekkel végzett.
- Minden mag valójában x számításokat végez másodpercenként, így a számítások teljes száma x( magok).
Minden mag képes másodpercenként x számításokat készíteni, feltételezve, hogy a munkaterhelés párhuzamos, egy lineáris programban mindössze 1 mag van.
- Az órajelsebesség inkább annak a ciklusszámnak a száma, amelyet a processzor egy másodpercen belül átmegy, tehát amíg minden mag ugyanolyan sebességgel fut, az egyes ciklusok sebessége ugyanaz marad, függetlenül attól, hogy hány magotlétezik. Más szóval, Hz =( core1Hz + core2Hz +. ..) / magok.
Azt gondolom, hogy tévedés azt feltételezni, hogy 4 x 3GHz = 12 GHz, a matematika működik, de hasonlókat hasonlít a narancsokra, és az összegek nem igazak, a GHz-et nem lehet egyszerűen összeadni minden helyzetben.Én változtatnám 4 x 3GHz = 4 x 3GHz-re.
Van valami a magyarázathoz? Hangzik ki a megjegyzésekben. Szeretne többet válaszolni a többi technikus-tudós Stack Exchange felhasználóiról? Nézze meg a teljes vitafonalat itt.