Prečo všetky procesory majú rovnakú rýchlosť namiesto rôznych?
Ak ste niekedy urobili veľa porovnávacích nákupov pre nový CPU, možno ste si všimli, že všetky jadrá majú skôr rýchlosť než kombináciu rôznych. Prečo to je? Dnešný príspevok typu SuperUser Q & A má odpoveď na otázku zvedavého čitateľa.
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čka SuperUser Jamie chce vedieť, prečo majú všetky jadrá CPU rovnakú rýchlosť namiesto iných:
Všeobecne platí, že ak kupujete nový počítač, určite, ktorý procesor si kúpite na základe očakávaného pracovného zaťaženia počítača. Výkonnosť vo videohrách má tendenciu byť určená jedinou jadrom rýchlosti, zatiaľ čo aplikácie ako strih videa sú určené počtom jadier. Z hľadiska toho, čo je dostupné na trhu, zdá sa, že všetky CPU majú približne rovnakú rýchlosť, pričom hlavné rozdiely sú viac vlákien alebo viac jadier.
Napríklad:
- Intel Core i5-7600K, základná frekvencia 3,80 GHz, 4 jadrá, 4 vlákna
- Intel Core i7-7700K, základná frekvencia 4,20 GHz, 4 jadrá, 8 vlákien
- AMD Ryzen 5 1600X, základná frekvencia 3,60 GHz, 6 jadier, 12 závitov
- AMD Ryzen 7 1800X, základná frekvencia 3,60 GHz, 8 jadier, 16 závitov
Prečo vidíme tento model rastúcich jadier, ale všetky jadrá majú rovnakú rýchlosť hodín? Prečo neexistujú varianty s rôznymi rýchlosťami hodín? Napríklad dve "veľké" jadrá a veľa malých jadier.
Namiesto štyroch jadier na 4,0 GHz (tj 4 x 4 GHz, maximálne 16 GHz), čo sa týka CPU s dvoma jadrami pracujúcimi na frekvencii 4,0 GHz a štyrmi jadrami pracujúcimi na frekvencii 2,0 GHz (tj 2 x 4,0 GHz + 4 × 2,0 GHz, maximálne 16 GHz)? Mohla by byť druhá možnosť rovnako dobrá pri pracovných zaťaženiach s jedným závitom, ale potenciálne lepšia pri viacnásobných pracovných zaťaženiach?
Pýtam sa na to ako na všeobecnú otázku, a nie konkrétne v súvislosti s procesormi uvedenými vyššie alebo o akomkoľvek konkrétnom pracovnom vyťažení. Len som zvedavý, prečo je tento model taký.
Prečo všetky jadrá CPU majú rovnakú rýchlosť namiesto iných?
Odpoveď
Príspevok SuperUser bwDraco má pre nás odpoveď:
Toto je známe ako heterogénne multiprocessing (HMP) a je široko prijaté mobilnými zariadeniami. V zariadeniach so systémom ARM, ktoré implementujú program big.LITTLE, procesor obsahuje jadrá s rôznymi výkonovými a výkonovými profilmi, tj niektoré jadrá prebiehajú rýchlo, ale čerpajú veľa energie (rýchlejšia architektúra a / alebo vyššie hodiny), zatiaľ čo iné sú energeticky účinné, ale pomalé pomalšia architektúra a / alebo nižšie hodiny). To je užitočné, pretože využívanie energie má tendenciu neprimerane narastať, pretože zvyšujete výkonnosť, keď dosiahnete určitý bod. Myšlienkou je získať výkon, keď to potrebujete, a životnosť batérie, keď nie.
Na stolových počítačoch je spotreba energie oveľa menej problémom, takže to nie je naozaj potrebné. Väčšina aplikácií očakáva, že každé jadro bude mať podobné výkonové charakteristiky a plánovacie procesy pre systémy HMP sú oveľa zložitejšie ako plánovanie tradičných systémov symetrického viacprocesorového (SMP) (technicky Windows 10 podporuje HMP, ale je určený hlavne pre mobilné zariadenia zariadenia, ktoré používajú ARM big.LITTLE).
Väčšina procesorov pre stolné počítače a prenosné počítače dnes nie je tepelne alebo elektricky obmedzená na miesto, kde niektoré jadrá potrebujú bežať rýchlejšie ako ostatné, a to aj pri krátkych výbojoch. V podstate sme narazili na stenu o tom, ako rýchlo môžeme vyrobiť jednotlivé jadrá, takže nahradenie niektorých jadier pomalšími, nedovolí, aby zostávajúce jadrá bežali rýchlejšie.
Zatiaľ čo existuje niekoľko desktopových procesorov, ktoré majú jedno alebo dve jadrá schopné bežať rýchlejšie ako ostatné, táto schopnosť je v súčasnosti obmedzená na niektoré veľmi výkonné procesory Intel (známe ako Turbo Boost Max Technology 3.0) a zahŕňa iba mierny nárast výkon pre tie jadrá, ktoré môžu bežať rýchlejšie.
Aj keď je určite možné navrhnúť tradičný x86 procesor s veľkými, rýchlymi jadrami a menšími, pomalšími jadrami na optimalizáciu pracovných záťaží s veľkou závitom, to by prinieslo značnú zložitosť návrhu procesora a aplikácie pravdepodobne nebudú správne podporovať.
Vezmite hypotetický procesor s dvoma rýchlymi jadrami Kaby Lake (7. generácie) a osmi pomalými jadrami Goldmont (Atom). Mali by ste mať celkovo 10 jadier a intenzívne pracovné záťaže optimalizované pre tento druh procesora môžu vidieť zisk z výkonu a efektívnosti v porovnaní s bežným štvorjadrovým procesorom Kaby Lake. Avšak rôzne typy jadier majú veľmi odlišné úrovne výkonnosti a pomalé jadrá dokonca nepodporujú niektoré pokyny, ktoré podporujú rýchle jadrá, ako napríklad AVX (ARM sa vyhýba tomuto problému tým, že vyžaduje, aby veľké aj LITTLE jadrá podporovali rovnaké pokyny ).
Opäť platí, že väčšina aplikácií s viacerými závitmi so systémom Windows predpokladá, že každé jadro má rovnakú alebo takmer rovnakú úroveň výkonu a môže vykonať rovnaké pokyny, takže tento druh asymetrie pravdepodobne povedie k menšiemu než ideálnemu výkonu, možno aj zrúti, ak používa inštrukcie, ktoré nie sú podporované pomalšími jadrami. Zatiaľ čo spoločnosť Intel mohla upraviť pomalé jadrá na pridanie rozšírenej podpory pokynov, aby všetky jadrá mohli vykonať všetky pokyny, nevyriešili by to problémy so softvérovou podporou pre heterogénne procesory.
Iný prístup k návrhu aplikácií, ktorý je bližšie k tomu, o čom ste pravdepodobne premýšľali vo svojej otázke, by použil GPU na zrýchlenie vysoko paralelných častí aplikácií. Môžete to urobiť pomocou rozhraní API ako OpenCL a CUDA. Pokiaľ ide o jedno-čipové riešenie, AMD podporuje hardvérovú podporu pre zrýchlenie GPU vo svojich APU, ktoré spája tradičný CPU a vysokovýkonný integrovaný GPU do rovnakého čipu ako Heterogeneous System Architecture, hoci to nevidí veľa príjmu odvetvia mimo niekoľkých špecializovaných aplikácií.
Máte niečo doplniť vysvetlenie? Znie to 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.
Image Credit: Mirko Waltermann (Flickr)