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

Obsah:

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

Video: Jak vypočítáváte rychlost procesoru na vícejádrových procesorech?
Video: How to Create a Custom Refresh Image in Windows 8 2024, Březen
Jak vypočítáváte rychlost procesoru na vícejádrových procesorech?
Jak vypočítáváte rychlost procesoru na vícejádrových procesorech?
Anonim
Nástup 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.
Nástup 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í zasedání Otázky a odpovědi se k nám přichází s laskavým svolením SuperUser - subdivize Stack Exchange, seskupování webových stránek s otázkami a odpověďmi.

Otázka

Snímač SuperUser NReilingh byl zvědavý, jak se rychlost procesoru pro vícejádrový systém skutečně vypočítá:

Is it correct to say, for example, that a processor with four cores each running at 3GHz is in fact a processor running at 12GHz?

I once got into a “Mac vs. PC” argument (which by the way is NOT the focus of this topic… that was back in middle school) with an acquaintance who insisted that Macs were only being advertised as 1Ghz machines because they were dual-processor G4s each running at 500MHz.

At the time I knew this to be hogwash for reasons I think are apparent to most people, but I just saw a comment on this website to the effect of “6 cores x 0.2GHz = 1.2Ghz” and that got me thinking again about whether there’s a real answer to this.

So, this is a more-or-less philosophical/deep technical question about the semantics of clock speed calculation. I see two possibilities:

  1. Each core is in fact doing x calculations per second, thus the total number of calculations is x(cores).
  2. Clock speed is rather a count of the number of cycles the processor goes through in the space of a second, so as long as all cores are running at the same speed, the speed of each clock cycle stays the same no matter how many cores exist. In other words, Hz = (core1Hz+core2Hz+…)/cores.

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

Odpověď

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

The main reason why a quad-core 3GHz processor is never as fast as a 12GHz single core is to do with how the task running on that processor works, i.e. single-threaded or multi-threaded. Amdahl’s Law is important when considering the types of tasks you are running.

If you have a task that is inherently linear and has to be done precisely step-by-step such as (a grossly simple program)

10: a = a + 1

20: goto 10

Poté úloha velmi závisí na výsledku předchozího průchodu a nemůže být spuštěna 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 psát je zpět jinak. To omezuje úlohu na jediný podproces, a proto úloha může být kdykoliv 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 v č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: goto 10

Všechny tyto řádky jsou nezávislé a mohly by být rozděleny 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éhokoli synchronizačního problému, to je místo, kde Amdahlovy zákony jde 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 dělat úkol rozdělit na samostatné části a vícevláknové, pak 4 jádra mohou přijít blízko, ale ne docela dosáhnout, stejný výkon podle Amdahlovy zákona.

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 byly naplněny daty a sbíraly data, s nimiž 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í během jedné sekundy, 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 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 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.

Doporučuje: