Úvodná » ako » Ako vypočítavate rýchlosť procesora na viacjadrových procesoroch?

    Ako vypočítavate rýchlosť procesora na viacjadrových procesoroch?

    Nástup ekonomických spotrebiteľských viacjadrových procesorov vyvoláva otázku pre mnohých používateľov: ako efektívne vypočítať skutočnú rýchlosť viacjadrového systému? Je 4-core 3Ghz systém naozaj 12Ghz? Čítajte ďalej počas vyšetrovania.

    Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, zoskupenia webových stránok typu Q & A.

    Otázka

    Čítač SuperUser NReilingh bol zvedavý, ako rýchlosť procesora pre viacjadrový systém je skutočne vypočítaná:

    Je správne povedať napríklad, že procesor so štyrmi jadrami, každý z nich pracujúcich na frekvencii 3GHz, je v skutočnosti procesor bežiaci na 12GHz?

    Kedysi som sa dostal do argumentu "Mac vs. PC" (ktorý mimochodom NIE JE zameraný na túto tému ... ktorý bol späť v strednej škole) s známym, ktorý trval na tom, že Macs boli len inzerované ako 1Ghz stroje, pretože boli duálne procesor G4, každý s frekvenciou 500 MHz.

    V tej dobe som vedel, že je to blázon z dôvodov, ktoré si myslím, že sú zrejmé pre väčšinu ľudí, ale ja som videl komentár na túto webovú stránku v zmysle "6 jadier x 0.2GHz = 1.2Ghz" a to ma opäť myslieť na to, či na to je skutočná odpoveď.

    Takže toto je viac či menej filozofická / hlboká technická otázka o sémantike výpočtu rýchlosti hodín. Vidím dve možnosti:

    1. Každé jadro v skutočnosti robí x výpočty za sekundu, takže celkový počet výpočtov je x (jadrá).
    2. Rýchlosť hodín je skôr počet cyklov, ktoré procesor prechádza v priebehu sekundy, takže ak všetky jadrá beží rovnakou rýchlosťou, rýchlosť každého cyklu zostáva rovnaká bez ohľadu na to, koľko jadier existuje , Inými slovami, Hz = (core1Hz + core2Hz + ...) / jadrá.

    Takže aký je vhodný spôsob, ako označiť celkovú rýchlosť hodín a čo je ešte dôležitejšie, je dokonca možné použiť jednojadrovú rýchlostnú nomenklatúru na viacjadrovom systéme?

    Odpoveď

    Prispievatelia služby SuperUser Mokubai pomáhajú objasniť veci. On píše:

    Hlavným dôvodom, prečo štvorjadrový procesor 3GHz nikdy nie je taký rýchly ako jednoprogramové rozlíšenie 12 GHz, súvisí s tým, ako funguje úloha spustená na tomto procesore, t. J. Jednosávková alebo viacvláknová. Amdahlov zákon je dôležitý pri posudzovaní typov úloh, ktoré používate.

    Ak máte úlohu, ktorá je prirodzene lineárna a musí sa robiť presne krok za krokom, ako je (hrubo jednoduchý program)

    10: a = a + 1
    20: dostal 10 

    Potom úloha závisí vo veľkej miere na výsledku predchádzajúceho prechodu a nemôže spúšťať viac kópií bez toho, aby došlo k poškodeniu hodnoty 'A' pretože každá kópia bude mať hodnotu 'A' v rôznych časoch a písať ho späť inak. To obmedzuje úlohu na jedinú niť, a preto úloha môže byť vždy spustená na jednom jadre v ľubovoľnom čase, ak by sa spustila na viacerých jadrách, potom by došlo k poškodeniu synchronizácie. To ho obmedzuje na polovicu výkonu cpu systému dvojitého jadra alebo 1/4 v štvorjadrovom systéme.

    Teraz vykonajte úlohu, ako napríklad:

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

    Všetky tieto riadky sú nezávislé a mohli by byť rozdelené do 4 samostatných programov, ako je prvý a bežať súčasne, každý schopný efektívne využívať plnú silu jedného z jadier bez akéhokoľvek synchronizačného problému, to je miesto, kde Amdahlov zákon prichádza do nej.

    Takže ak máte jednu závitovú aplikáciu robiť výpočty hrubou silou, jediný 12GHz procesor by vyhral ruky nadol, ak môžete nejako urobiť úlohu rozdeliť na samostatné časti a multi-threaded potom 4 jadra by mohli prísť blízko, ale nie dosť dosah, rovnaký výkon ako podľa Amdahlovho zákona.

    Hlavná vec, ktorú vám systém multiprocesorov poskytuje, je schopnosť reagovať. Na jedinom jadrovom stroji, ktorý tvrdo pracuje, sa môže systém zdajú byť pomalé, pretože väčšinu času môže používať jedna úloha a ostatné úlohy prebiehajú len v krátkych výbojoch medzi väčšími úlohami, výsledkom čoho je systém, ktorý sa zdá byť pomalý alebo drsný , Na viacjadrovom systéme ťažké úlohy dostávajú jedno jadro a všetky ostatné úlohy hrajú na ostatných jadrách, robia svoju prácu rýchlo a efektívne.

    Argument "6 jadier x 0.2GHz = 1.2Ghz" je odpad v každej situácii, okrem prípadov, kde sú úlohy dokonale paralelné a nezávislé. Existuje množstvo úloh, ktoré sú veľmi paralelné, ale stále vyžadujú určitú formu synchronizácie. Ručná brzda je video trankodér, ktorý je veľmi dobrý pri používaní všetkých dostupných procesorov, ale nevyžaduje základný proces na udržanie ostatných vlákien naplnených údajmi a na zhromažďovanie údajov, ktoré sa vykonávajú.

    1. Každé jadro v skutočnosti robí x výpočty za sekundu, takže celkový počet výpočtov je x (jadrá).

    Každé jadro je schopné robiť x výpočty za sekundu, za predpokladu, že pracovné zaťaženie je vhodné paralelne, na lineárnom programe všetko, čo máte, je 1 jadro.

    1. Rýchlosť hodín je skôr počet cyklov, ktoré procesor prechádza v priebehu sekundy, takže ak všetky jadrá beží rovnakou rýchlosťou, rýchlosť každého cyklu zostáva rovnaká bez ohľadu na to, koľko jadier existuje , Inými slovami, Hz = (core1Hz + core2Hz + ...) / jadrá.

    Myslím, že je to omyl mysliť, že 4 x 3GHz = 12GHz, udeľuje matematické práce, ale porovnávate jablká s pomarančmi a sumy jednoducho nie sú správne, GHz sa nedá jednoducho pridať do každej situácie. Zmenil by som to na 4 x 3GHz = 4 x 3GHz.

    Máte niečo doplniť vysvetlenie? Vyjadrite sa v komentároch. Chcete sa dozvedieť viac odpovedí od iných používateľov technickej úrovne Stack Exchange? Pozrite sa na celý diskusný príspevok tu.