A gazdaságos fogyasztói minőségű többmagos processzorok megjelenése sok felhasználó számára felveti a kérdést: hogyan lehet hatékonyan kiszámítani a többmagos rendszer valós sebességét? Egy 4 magos 3Ghz rendszer valóban 12Ghz? Olvassa tovább, miközben nyomozunk.
A mai Kérdések és válaszok a SuperUser jóvoltából érkeznek hozzánk - a Stack Exchange alosztályához, amely a Q & A webhelyek közösségi hajtású csoportosulása.
A kérdés
Az NReilingh SuperUser olvasó kíváncsi volt, hogyan számítják ki a processzor sebességét egy többmagos rendszer esetében:
Helyes-e például azt mondani, hogy egy-egy négy magos, 3GHz-en működő processzor valójában egy 12GHz-es processzor?
Egyszer egy „Mac vs. PC” vitába keveredtem (amely egyébként NEM a téma középpontjában áll ... ez még a középiskolában volt) egy ismerősömnél, aki ragaszkodott hozzá, hogy a Mac-eket csak 1GHz-es gépekként hirdetik, mert kettősek - mindegyik G4 processzor 500MHz-en fut.
Akkor tudtam, hogy ez disznóság, olyan okok miatt, amelyekről azt gondolom, hogy a legtöbb ember számára nyilvánvaló, de csak láttam egy megjegyzést ezen a weboldalon, amely a „6 mag x 0,2 GHz = 1,2 GHz” hatásra vezetett, és ez ismét arra gondolt, hogy van erre valódi válasz.
Tehát ez egy többé-kevésbé filozófiai / mély technikai kérdés az órajel számításának szemantikájáról. Két lehetőséget látok:
- Valójában minden mag másodpercenként x számítást végez, így a számítások teljes száma x (mag).
- Az órajel inkább a ciklusok számát jelenti, amelyet a processzor egy másodperc alatt átmegy, így mindaddig, amíg az összes mag azonos sebességgel fut, az egyes óraciklusok sebessége változatlan marad, függetlenül attól, hogy hány mag létezik . Más szavakkal, Hz = (mag1Hz + mag2Hz +…) / mag.
Tehát mi a megfelelő módja a teljes órajel jelölésének, és ami még fontosabb, lehetséges-e még egymagos sebességnómenklatúra használata többmagos rendszerben?
A válasz
A SuperUser közreműködői, Mokubai segítenek tisztázni a dolgokat. Ír:
A négymagos 3GHz-es processzor soha nem olyan gyors, mint egy 12GHz-es egymagos, annak fő oka, hogy az adott processzoron futó feladat hogyan működik, azaz egyszálú vagy többszálú. Amdahl törvénye fontos a futtatott feladattípusok mérlegelésekor.
Ha van egy olyan feladata, amely eredendően lineáris és pontosan lépésről lépésre kell elvégeznie, például (egy rendkívül egyszerű program)
10: a = a + 120: 10-nkéntEkkor a feladat nagymértékben függ az előző lépés eredményétől, és nem futtathat több példányt önmagából anélkül, hogy megrontaná a (z) értékét
'a'mivel minden példány megkapja az értékét'a'különböző időpontokban, és másként írja vissza. Ez a feladatot egyetlen szálra korlátozza, és így a feladat bármikor csak egyetlen magon futhat, ha több magon futna, akkor megtörténne a szinkronizálási sérülés. Ez a kétmagos rendszer CPU-teljesítményének 1/2-ére, vagy négymagos rendszer 1/4-ére korlátozza.Most végezzen el egy olyan feladatot, mint:
10: a = a + 120: b = b + 130: c = c + 140: d = d + 150: 10-nkéntEzek a vonalak függetlenek, és 4 különálló programra oszthatók, mint például az első, és egyszerre futtathatóak, és mindegyik képes szinkronizálási probléma nélkül hatékonyan kihasználni az egyik mag teljes teljesítményét, itt Amdahl törvénye jön bele.
Tehát, ha egyetlen menetes alkalmazás van, amely durva erő számításokat végez, akkor az egyetlen 12 GHz-es processzor kezet fog nyerni, ha valahogy különálló részekre bontja a feladatot és többszálúvá teszi a feladatot, akkor a 4 mag közel lehet, de nem egészen elérhető, ugyanaz az előadás, mint Amdahl törvényében.
A legfontosabb, amit egy multi CPU rendszer ad neked, az az érzékenység. Egymagú, keményen dolgozó gépen a rendszer lassúnak tűnhet, mivel az idő nagy részét egy feladat használhatja, a többi feladat pedig csak rövid sorozatban fut a nagyobb feladat között, ami lassúnak vagy bonyolultnak tűnik. . Többmagos rendszeren a nehéz feladat egy magot kap, és az összes többi feladat a többi magon játszik, gyorsan és hatékonyan végzi munkáját.
A „6 mag x 0,2 GHz = 1,2 GHz” érvelés minden helyzetben szemét, kivéve, ha a feladatok tökéletesen párhuzamosak és függetlenek. Nagyon sok olyan feladat létezik, amelyek nagyon párhuzamosak, de mégis szükségük van valamilyen szinkronizálásra. Kézifék egy videokódoló, amely nagyon jól tudja használni az összes rendelkezésre álló CPU-t, de alapvető folyamatra van szükség ahhoz, hogy a többi szál tele maradjon adatokkal és összegyűjtse azokat az adatokat, amelyekkel elkészültek.
- Valójában minden mag másodpercenként x számítást végez, így a számítások teljes száma x (mag).
Minden mag képes másodpercenként x számítás elvégzésére, feltéve, hogy a terhelés párhuzamosan megfelelő, egy lineáris programon csak 1 mag van.
- Az órajel inkább a ciklusok számát jelenti, amelyet a processzor egy másodperc alatt átmegy, így mindaddig, amíg az összes mag azonos sebességgel fut, az egyes óraciklusok sebessége változatlan marad, függetlenül attól, hogy hány mag létezik . Más szavakkal, Hz = (mag1Hz + mag2Hz +…) / mag.
Szerintem tévedés azt gondolni, hogy 4 x 3GHz = 12GHz, a matematika működik, de összehasonlítja az almát a narancssal, és az összegek egyszerűen nem stimmelnek, a GHz-et nem lehet egyszerűen összeadni minden helyzetben. 4 x 3GHz = 4 x 3GHz-re változtatnám.
Van valami hozzáfűzhető a magyarázathoz? Hangzik el a megjegyzésekben. Szeretne további válaszokat olvasni más, hozzáértő Stack Exchange-felhasználóktól? Nézze meg a teljes vitafonalat itt .