Jak vypočítáte rychlost procesoru na vícejádrových procesorech?
Příchod ekonomických spotřebitelských vícejádrových procesorů vyvolává otázku pro mnoho uživatelů: jak účinně vypočítáte skutečnou rychlost vícejádrového systému? Je 4-core 3Ghz systém skutečně 12Ghz? Přečtěte si, jak vyšetřujeme.
Dnešní zasedání Otázky a odpovědi se k nám přichází s laskavým svolením SuperUser - subdivize Stack Exchange, seskupení webových stránek Q & A.
Otázka
Snímač SuperUser NReilingh byl zvědavý, jak se rychlost procesoru pro vícejádrový systém skutečně vypočítá:
Je správné například říci, že procesor se čtyřmi jádry, který běží na frekvenci 3GHz, je ve skutečnosti procesor pracující na frekvenci 12GHz?
Kdysi jsem se dostal do argumentu "Mac versus PC" (což mimochodem není předmětem tohoto tématu ... to bylo na střední škole) se známým, který trval na tom, že Macs byly inzerovány pouze jako 1Ghz stroje, protože byly duální -procesor G4, každý s frekvencí 500MHz.
V té době jsem věděl, že je to blábol z důvodů, které podle mého názoru jsou pro většinu lidí zřejmé, ale právě jsem viděl komentář na tuto stránku s účinkem "6 jader x 0.2GHz = 1.2Ghz" a to mě přemýšlelo znovu o tom, zda na to je skutečná odpověď.
Takže toto je více či méně filosofická / hluboká technická otázka o sémantikách výpočtu rychlosti hodin. Vidím dvě možnosti:
- Každé jádro ve skutečnosti dělá x výpočty za sekundu, takže celkový počet výpočtů je x (jádra).
- Rychlost hodin je spíše počítáním počtu cyklů, které procesor prochází za sekundu, takže pokud všechna jádra běží stejnou rychlostí, rychlost každého cyklu hodin zůstává stejná bez ohledu na to, kolik jader existuje . Jinými slovy, Hz = (core1Hz + core2Hz + ...) / jádra.
Takže jaký je vhodný způsob označování celkové rychlosti hodin, a co je ještě důležitější, je dokonce možné použít jednojadrovou rychlostní nomenklaturu na vícejádrovém systému?
Odpověď
Příspěvky přispěvatelů SuperUser Mokubai pomáhají vymýtit věci. Napsal:
Hlavním důvodem, proč čtyřjádrový procesor 3GHz nikdy není tak rychlý jako jediné jádro o frekvenci 12 GHz, je způsob, jakým úloha spuštěná na tomto procesoru funguje, tj. S jedním nebo více závitům. Amdahlův zákon je důležitý při zvažování typů úkolů, které používáte.
Pokud máte úkol, který je přirozeně lineární a musí se provádět přesně krok za krokem, jako je (hrubě jednoduchý program)
10: a = a + 1
20: 10
Poté úloha velmi závisí na výsledku předchozího průchodu a nemůže spustit více kopií samotného bez poškození hodnoty
'A'
protože každá kopie by získala hodnotu'A'
v různých časech a psát je zpět jinak. To omezuje úlohu na jediný podproces, a proto úloha může být kdykoli spuštěna na jediném jádru v daném okamžiku, pokud by byla spuštěna na více jádrech, pak by došlo k poškození synchronizace. To omezuje na 1/2 výkonu procesoru dvoujádrového systému nebo 1/4 ve čtyřjádrovém systému.Nyní proveďte úkol, například:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: 10
Všechny tyto řádky jsou nezávislé a mohly by být rozděleny do čtyř samostatných programů jako první a současně běh, každý schopný efektivně využívat plnou moc jednoho jádra bez jakéhokoliv synchronizačního problému, to je místo, kde Amdahlovy zákon přijde do toho.
Takže pokud máte jednu závitovou aplikaci, která provádí výpočty hrubou silou, jeden procesor 12 GHz vyhraje ruce dolů, pokud můžete nějak rozdělit úlohu na jednotlivé části a vícevláknové, pak by se mohly 4 jádra přiblížit, stejný výkon podle zákona Amdahla.
Hlavní věc, kterou vám systém více procesorů poskytuje, je odezva. Na jediném jádrovém stroji, který pracuje tvrdě, může systém vypadat pomalý, protože většinu času by mohl používat jeden úkol a jiné úkoly probíhají pouze v krátkých výbojcích mezi větším úkolem, což vede k systému, který se zdá být pomalý nebo drsný . U vícejádrového systému těžké úkoly dostanou jedno jádro a všechny ostatní úkoly hrají na ostatních jádrech, a to rychle a efektivně.
Argument "6 jader x 0.2GHz = 1.2Ghz" je odpad v každé situaci, kromě případů, kdy jsou úkoly dokonale paralelní a nezávislé. Existuje mnoho úkolů, které jsou velmi paralelní, ale stále vyžadují nějakou formu synchronizace. Ruční brzda je video trankodér, který je velmi dobrý při použití všech dostupných procesorů, ale nevyžaduje jádrový proces k udržení ostatních vláken plných dat a shromažďování dat, která se dělají.
- Každé jádro ve skutečnosti dělá x výpočty za sekundu, takže celkový počet výpočtů je x (jádra).
Každé jádro je schopno dělat x výpočty za sekundu, za předpokladu, že pracovní zátěž je vhodná paralelně, na lineárním programu vše, co máte, je 1 jádro.
- Rychlost hodin je spíše počítáním počtu cyklů, které procesor prochází za sekundu, takže pokud všechna jádra běží stejnou rychlostí, rychlost každého cyklu hodin zůstává stejná bez ohledu na to, kolik jader existuje . Jinými slovy, Hz = (core1Hz + core2Hz + ...) / jádra.
Myslím, že je to omyl myslet si, že 4 x 3GHz = 12GHz, uděluje matematické práce, ale porovnáváte jablka s pomeranči a součty prostě nejsou správné, GHz nelze jednoduše přidávat dohromady pro každou situaci. Změnil bych to na 4 x 3GHz = 4 x 3GHz.
Musíte něco přidat k vysvětlení? Vypadněte v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.