Pokud jste někdy hodně nakupovali nové CPU, možná jste si všimli, že všechna jádra mají spíše rychlost než kombinaci různých. Proč? Dnešní příspěvek SuperUser Q&A má odpověď na otázku zvědavého čtenáře.
Dnešní relace Otázky a odpovědi k nám přichází s laskavým svolením SuperUser - členění Stack Exchange, komunitního seskupení webů otázek a odpovědí.
Otázka
Čtečka SuperUser Jamie chce vědět, proč mají všechna jádra CPU stejnou rychlost místo různých:
Obecně platí, že pokud kupujete nový počítač, můžete určit, který procesor koupit, na základě očekávané zátěže počítače. Výkon ve videohrách má tendenci být určen rychlostí jednoho jádra, zatímco aplikace jako úpravy videa jsou určeny počtem jader. Pokud jde o to, co je k dispozici na trhu, zdá se, že všechny CPU mají zhruba stejnou rychlost, přičemž hlavní rozdíly jsou více vláken nebo více jader.
Například:
- Intel Core i5-7600K, základní frekvence 3,80 GHz, 4 jádra, 4 vlákna
- Intel Core i7-7700K, základní frekvence 4,20 GHz, 4 jádra, 8 vláken
- AMD Ryzen 5 1600X, základní frekvence 3,60 GHz, 6 jader, 12 vláken
- AMD Ryzen 7 1800X, základní frekvence 3,60 GHz, 8 jader, 16 vláken
Proč vidíme tento vzorec zvětšování jader, přesto mají všechna jádra stejnou rychlost hodin? Proč neexistují varianty s rozdílnou rychlostí hodin? Například dvě „velká“ jádra a spousta malých jader.
Namísto, řekněme, čtyř jader na 4,0 GHz (tj. 4 × 4 GHz, maximálně 16 GHz), co CPU s dvěma jádry běžícími na 4,0 GHz a čtyřmi jádry běžícími na 2,0 GHz (tj. 2 × 4,0 GHz + 4 × 2,0 GHz, maximálně 16 GHz)? Byla by druhá možnost stejně dobrá při úlohách s jedním vláknem, ale potenciálně lepší u úloh s více vlákny?
Ptám se na to jako na obecnou otázku a ne konkrétně s ohledem na CPU uvedené výše nebo na konkrétní pracovní zátěž. Jen jsem zvědavý, proč je vzor takový, jaký je.
Proč mají všechna jádra CPU stejnou rychlost místo různých?
Odpověď
Přispěvatel SuperUser bwDraco má pro nás odpověď:
Toto se označuje jako heterogenní vícenásobné zpracování (HMP) a je široce používáno mobilními zařízeními. V zařízeních založených na ARM, které implementují velký. MALÉ , procesor obsahuje jádra s různými profily výkonu a výkonu, tj. některá jádra běží rychle, ale čerpají hodně energie (rychlejší architektura a / nebo vyšší hodiny), zatímco jiná jsou energeticky účinná, ale pomalá (pomalejší architektura a / nebo nižší hodiny). To je užitečné, protože spotřeba energie má tendenci se neúměrně zvyšovat, jak zvyšujete výkon, jakmile překročíte určitý bod. Myšlenkou je získat výkon, když to potřebujete, a výdrž baterie, pokud ne.
Na desktopových platformách je spotřeba energie mnohem menší problém, takže to není skutečně nutné. Většina aplikací očekává, že každé jádro bude mít podobné výkonnostní charakteristiky, a procesy plánování pro systémy HMP jsou mnohem složitější než plánování pro tradiční systémy symetrického vícenásobného zpracování (SMP) (Windows 10 má technickou podporu pro HMP, ale je určen hlavně pro mobilní zařízení zařízení, která používají ARM big.LITTLE).
Většina dnešních procesorů pro stolní počítače a notebooky také není tepelně ani elektricky omezena do bodu, kdy některá jádra musí běžet rychleji než jiná, a to i při krátkých výbojích. V podstatě jsme narazili do zdi jak rychle dokážeme vyrobit jednotlivá jádra , takže výměna některých jader za pomalejší nedovolí, aby zbývající jádra běžela rychleji.
I když existuje několik desktopových procesorů, které mají jedno nebo dvě jádra schopné pracovat rychleji než ostatní, tato schopnost je v současné době omezena na některé velmi špičkové procesory Intel (známé jako Turbo Boost Max Technology 3.0) a zahrnuje pouze mírný zisk výkon pro jádra, která mohou běžet rychleji.
I když je jistě možné navrhnout tradiční procesor x86 s velkými, rychlými jádry a menšími, pomalejšími jádry, aby se optimalizovaly pro úlohy s velkým množstvím vláken, přidalo by to značnou složitost návrhu procesoru a je nepravděpodobné, že by ho aplikace správně podporovaly.
Vezměte si hypotetický procesor se dvěma rychlými Kaby Lake (7. generace) jádra a osm pomalé Goldmont (Atom) jádra. Měli byste celkem 10 jader a silně podprocesní pracovní vytížení optimalizovaná pro tento druh procesoru mohou vidět nárůst výkonu a efektivity oproti běžnému čtyřjádrovému procesoru Kaby Lake. Různé typy jader však mají divoce odlišné úrovně výkonu a pomalá jádra nepodporují ani některé pokyny, které rychlá jádra podporují, například AVX (ARM se tomuto problému vyhne tím, že bude vyžadovat, aby jak velká, tak MALÁ jádra podporovaly stejné pokyny).
Většina vícevláknových aplikací založených na systému Windows opět předpokládá, že každé jádro má stejnou nebo téměř stejnou úroveň výkonu a může provádět stejné pokyny, takže tento druh asymetrie pravděpodobně vyústí v méně než ideální výkon, možná dokonce dojde k chybě, pokud používá pokyny, které nejsou podporovány pomalejšími jádry. Zatímco Intel mohl upravit pomalá jádra tak, aby přidala podporu pokročilých instrukcí, aby všechna jádra mohla provádět všechny instrukce, nevyřešilo by to problémy se softwarovou podporou pro heterogenní procesory.
Odlišný přístup k návrhu aplikace, blíže tomu, na co ve své otázce pravděpodobně myslíte, by použil GPU pro zrychlení vysoce paralelních částí aplikací. To lze provést pomocí API, jako je OpenCL a ZÁZRAKY . Pokud jde o jednočipové řešení, AMD podporuje hardwarovou podporu akcelerace GPU ve svých APU, které kombinují tradiční CPU a vysoce výkonný integrovaný GPU do stejného čipu, jako Heterogenní systémová architektura , ačkoli to nevidělo mnoho průmyslového využití mimo několik specializovaných aplikací.
Máte co dodat k vysvětlení? Zvuk v komentářích. Chcete si přečíst více odpovědí od ostatních technicky zdatných uživatelů Stack Exchange? Podívejte se na celé diskusní vlákno zde .
Kredit obrázku: Mirko Waltermann (Flickr)