15Aug

Jak vypočítáváte rychlost procesoru na vícejádrových procesorech?

click fraud protection

Příchod ekonomických spotřebitelských vícejádrových procesorů vyvolává otázku pro mnoho uživatelů: jak účinně vypočítat skutečnou rychlost vícejádrového systému? Je 4-core 3Ghz systém skutečně 12Ghz? Přečtěte si, jak to zkoumáme.

dnešní otázka &Odpověď na odpověď nám přichází s laskavým svolením SuperUser - rozdělení Stack Exchange, seskupení webových stránek Q & A na úrovni komunity.

Otázka Otázka

SuperUser čtečka NReilingh byla zvědavá, jak rychlost procesoru pro vícejádrový systém je ve skutečnosti vypočítáván:

Je správné říkat například, že procesor se čtyřmi jádry, každý spuštěný na 3GHz je ve skutečnosti procesor běžícína 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 jen inzerovány jako 1Ghz stroje, protože bylydvouprocesorové G4, které běží na 500MHz.

V době, kdy jsem věděl, že je to hogwash z důvodů, které si myslím, že 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 ozda na to existuje skutečná odpověď.

instagram viewer

Takže to 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:

  1. 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).
  2. Rychlost hodin je spíše počítáním počtu cyklů, které procesor prochází za sekundu, takže pokud všechny jádra běží stejnou rychlostí, rychlost každého cyklu hodin zůstává stejná bez ohledu na to, kolik jaderexistovat. Jinými slovy, Hz =( core1Hz + core2Hz +. ..) / jádra.

Takže jaký je vhodný způsob označování celkové rychlosti hodin a co je důležitější, je dokonce možné použít vícejádrovou rychlostní nomenklaturu na vícejádrovém systému?

Odpovědí odpovědí

SuperUser Mokubai pomáhá vyřešit věci. Píše:

Hlavním důvodem, proč čtyřjádrový procesor 3GHz nikdy není tak rychlý jako jediné jádro o frekvenci 12GHz, je to, jak funguje úloha spuštěná na tomto procesoru, 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.

10: a = a + 1 20: goto 10

Poté úloha záleží na výsledku(

), který je v podstatě lineární a musí se provádět přesně krok za krokem, jako je( hrubě jednoduchý program)předchozího průkazu a nemůže spustit vícenásobné kopie bez poškození hodnoty "a", protože každá kopie by získala hodnotu "a" v různých časech a zapisovala jej jinak. To omezuje úlohu na jediný podproces, a proto úkol může být kdykoli spuštěn na jediném jádru v kterémkoli daném okamžiku, pokud by byl spuštěn 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 v čtyřjádrovém systému.

Nyní proveďte úkol jako:

10: a = a + 1 20: b = b + 1 30: c = c + 1 40: d = d + 1 50: goto 10

Všechny tyto řádky jsou nezávislébýt rozdělena do 4 samostatných programů jako první a současně běh, každý schopný efektivně využívat plnou sílu jednoho jádra bez jakéhokoliv synchronizačního problému, to je místo, kde Amdahlův zákon přichází.

Takže pokud máte jednu závitovou aplikaci, která dělá výpočty hrubou silou, jediný 12GHz procesor by vyhrál ruce dolů, pokud můžete nějak dělat úkol rozdělit na jednotlivé části a multi-threaded pak 4 jádra mohla přijít blízko, ale ne docela dosah, 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 může používat jeden úkol a ostatní úkoly probíhají pouze v krátkých výbojcích mezi větším úkolem, což má za následek systém, který se zdá být pomalý nebo drsný.Na vícejádrovém systému se těžký úkol dostane do jednoho jádra a všechny ostatní úkoly hrají na ostatních jádrech a dělají práci rychle a efektivně.

Argument "6 jader x 0.2GHz = 1.2Ghz" je odpad v každé situaci, s výjimkou případů, kdy jsou úkoly dokonale paralelní a nezávislé.Existuje mnoho úkolů, které jsou vysoce 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, aby ostatní vlákna naplnily data a shromažďovaly data, s nimiž se dělají.

  1. 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 máte jen 1 jádro.

  1. 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 jaderexistovat. 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 srovná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.