Proč všechny jádro CPU mají stejnou rychlost namísto rozdílných?
Pokud jste někdy udělali hodně srovnání nákupu nového CPU, možná jste si všimli, že všechny jádry mají spíše rychlost než kombinaci různých. Proč je to tak? Dnešní příspěvek SuperUser Q & A má odpověď na zvědavou otázku čtenáře.
Dnešní zasedání Otázky a odpovědi nás přichází s laskavým svolením SuperUser - podřízené rozdělení Stack Exchange, které je založeno na komunitě prostřednictvím skupin webových stránek.
Otázka
Čtečka SuperUser Jamie chce vědět, proč jádra procesoru mají stejnou rychlost než jiné:
Obecně platí, že pokud si koupíte nový počítač, určit, který procesor je třeba koupit na základě očekávané pracovní zátěže počítače. Výkonnost ve videohrách má tendenci být určována jednorázovou rychlostí, zatímco aplikace, jako je editace videa, jsou určeny počtem jader. Pokud jde o to, co je na trhu k dispozici, zdá se, že všechny CPU mají zhruba stejnou rychlost, přičemž hlavní rozdíly jsou více vlákna nebo více jader.
Například:
- Intel Core i5-7600K, základní frekvence 3,80 GHz, 4 jádra, 4 závity
- Intel Core i7-7700K, základní frekvence 4.20 GHz, 4 jádra, 8 závitů
- AMD Ryzen 5 1600X, základní frekvence 3,60 GHz, 6 jader, 12 závitů
- AMD Ryzen 7 1800X, základní frekvence 3,60 GHz, 8 jader, 16 závitů
Proč vidíme tento vzorec rostoucích jader, ale všechna jádra mají stejnou rychlost? Proč neexistují varianty s různými rychlostmi hodin? Například dvě "velké" jádra a spousty malých jader.
Namísto čtyřmi jádry na 4,0 GHz (tj. 4 × 4 GHz, maximálně 16 GHz), jak o CPU se dvěma jádry pracujícími na 4,0 GHz a čtyřmi jádry na 2,0 GHz (tj. 2 × 4,0 GHz + 4 × 2,0 GHz, maximum 16 GHz)? Byla by druhá možnost stejně dobrá při závitových pracovních zatíženích, ale potenciálně lepší při zatížení s více závitmi?
Ptám se na to jako na obecnou otázku, a nikoliv konkrétně s ohledem na CPU uvedené výše nebo na jedno specifické pracovní zatížení. Jsem jen zvědavá, proč je vzorek to, čím to je.
Proč mají jádra CPU všechny stejnou rychlost než jiné?
Odpověď
Příspěvek SuperUser bwDraco má pro nás odpověď:
Toto je známé jako heterogenní multiprocessing (HMP) a je široce využíváno mobilními zařízeními. V zařízeních ARM, které implementují program large.LITTLE, obsahuje procesory jádra s různými výkonovými a výkonovými profily, tj. Některé jádry běží rychle, ale čerpají spoustu výkonu (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 využívání energie má tendenci se neúměrně zvyšovat, protože zvyšujete výkonnost, jakmile se dostanete přes určitý bod. Myšlenkou je získat výkon, když to potřebujete, a životnost baterie, když ne.
Na stolních počítačích je spotřeba energie mnohem méně problémem, 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í symetrické systémy s více procesory (technicky, Windows 10 podporuje HMP, ale je určen hlavně pro mobilní zařízení zařízení, která používají ARM big.LITTLE).
Také většina procesorů stolních a přenosných počítačů dnes není tepelně nebo elektricky omezena na místo, kde některé jádra potřebují běžet rychleji než jiné, a to i při krátkých výbojkách. V podstatě jsme zasáhli zdi, jak rychle můžeme vyrobit jednotlivé jádra, takže nahrazení některých jader pomalejšími neumožní, aby zbývající jádra běžely rychleji.
Zatímco existuje několik desktopových procesorů, které mají jednu nebo dvě jádra schopné běhat rychleji než ostatní, tato schopnost je v současné době omezena na určité vysoce výkonné procesory Intel (známé jako Turbo Boost Max Technology 3.0) a zahrnuje pouze mírný zisk výkonnost pro ty jádra, které mohou běžet rychleji.
Zatímco je jistě možné navrhnout tradiční procesor x86 s velkými, rychlejšími jádry a menšími, pomalejšími jádry pro optimalizaci pracovních zátěží s velkým závitům, přineslo by to značné složitosti návrhu procesoru a aplikace by pravděpodobně správně nepodporovaly.
Vezměte hypotetický procesor s dvěma jádry Kaby Lake (7. generace) a osmi pomalými jádry Goldmontu (Atom). Budete mít celkem 10 jader a těžké závitové pracovní zatížení optimalizované pro tento typ procesoru může vidět zisk ve výkonu a efektivnosti v porovnání s běžným čtyřjádrovým procesorem Kaby Lake. Avšak různé typy jader mají velmi odlišné úrovně výkonu a pomalé jádra dokonce nepodporují některé pokyny, které podporují rychlá jádra, jako je AVX (ARM se vyhýbá tomuto problému tím, že vyžaduje, aby obě jádra velkých a LITTLE podporovaly stejné instrukce )..
Opět platí, že většina aplikací s více vlákny založených na systému Windows předpokládá, že každé jádro má stejnou nebo téměř stejnou úroveň výkonu a může provést stejné instrukce, takže tento druh asymetrie pravděpodobně povede k méně než ideálnímu výkonu, možná i selhání, pokud používá instrukce, které nejsou podporovány pomalejšími jádry. Zatímco Intel mohl upravit pomalé jádro pro přidání pokročilé podpory výuky tak, aby všechny jádra mohly provádět všechny instrukce, nevyřešily by to problémy se softwarovou podporou heterogenních procesorů.
Jiný přístup k návrhu aplikací, blíže k tomu, o čem pravděpodobně přemýšlíte ve své otázce, by využil GPU pro zrychlení vysoce paralelních částí aplikací. To lze provést pomocí rozhraní API jako OpenCL a CUDA. Co se týče jednočipového řešení, AMD podporuje hardwarovou podporu pro akceleraci GPU v jeho APU, která kombinuje tradiční CPU a vysoce výkonný integrovaný GPU do stejného čipu jako Heterogeneous System Architecture, několika málo specializovaných aplikací.
Musíte něco přidat k vysvětlení? Vyjmě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.
Image Credit: Mirko Waltermann (Flickr)