Ja jūs kādreiz esat veikuši lielu salīdzinājumu, iepirkdami jaunu CPU, iespējams, esat pamanījis, ka visiem kodoliem, šķiet, ir ātrums, nevis dažādu kombinācija. Kāpēc ir tā, ka? Šodienas SuperUser Q & A ziņai ir atbilde uz ziņkārīgo lasītāja jautājumu.
Šodienas jautājumu un atbilžu sesija mums priecājas par SuperUser - Stack Exchange dalību, kas ir kopienas vadīta Q & A tīmekļa vietņu grupa.
SuperUser lasītājs Džeimijs vēlas uzzināt, kāpēc CPU kodoliem ir vienāds ātrums, nevis dažādi:
Parasti, ja jūs pērkat jaunu datoru, jūs varētu noteikt, kurš procesors nopirkt, pamatojoties uz paredzamo datora darbplūsmu. Video spēļu veiktspēju parasti nosaka ar vienkāršu kodolu ātrumu, savukārt videoierakstu, piemēram, videoklipu rediģēšanas lietojumprogrammas tiek noteiktas pēc serdeņu skaita. Runājot par to, kas ir pieejams tirgū, šķiet, ka visiem CPU ir aptuveni tāds pats ātrums, jo galvenās atšķirības ir vairāk pavedienu vai vairāk kodolu.
Piemēram:
- Intel Core i5-7600K, bāzes frekvence 3,80 GHz, 4 serdeņi, 4 vītnes
- Intel Core i7-7700K, bāzes frekvence 4,20 GHz, 4 serdeņi, 8 pavedieni
- AMD Ryzen 5 1600X, bāzes frekvence 3,60 GHz, 6 serdeņi, 12 vītnes
- AMD Ryzen 7 1800X, bāzes frekvence 3,60 GHz, 8 serdeņi, 16 vītnes
Kāpēc mēs redzam šo pieaugošo kodolu modeli, bet visi serdeņi ir tādi paši pulksteņa ātrumi? Kāpēc nav variantu ar atšķirīgu pulksteņa ātrumu? Piemēram, divi "lielie" serdeņi un daudz mazu serdeņu.
Tā vietā, teiksim, četri serdeņi ar 4,0 GHz (ti, 4 × 4 GHz, maksimālais 16 GHz), kā par CPU ar diviem serdeniem, kas darbojas ar 4,0 GHz, un četriem kodoliem, kas darbojas ar 2,0 GHz (ti, 2 × 4,0 GHz + 4 × 2,0 GHz, maksimums 16 GHz)? Vai otrā opcija būtu tikpat laba vienā vītņotajā darba slodzē, bet, iespējams, labāka multi-threaded darba slodzēs?
Es to uzskatu par vispārīgu jautājumu, nevis tieši attiecībā uz iepriekš minētajiem CPU vai par kādu konkrētu darba slodzi. Man ir tikai interesanti, kāpēc modelis ir tas, kas tas ir.
Kāpēc CPU kodoliem visiem ir vienāds ātrums, nevis dažādi?
SuperUser ieguldītājs bwDraco mums ir atbilde:
To sauc par neviendabīgu daudzprocess (HMP), un to plaši izmanto mobilās ierīces. Ar ARM balstītām ierīcēm, kas ievieš lielu. LITTLE, procesors satur serdeņus ar dažādiem veiktspējas un jaudas profiliem, ti, daži serdeņi darbojas ātri, bet daudz enerģijas (ātrāk arhitektūra un / vai lielāki pulksteņi), bet citi ir energoefektīvi, bet lēni ( lēnāka arhitektūra un / vai zemāki pulksteņi). Tas ir noderīgi, jo jaudas izmantošana mēdz neproporcionāli palielināties, palielinot veiktspēju, kad nokļūstat noteiktā brīdī. Ideja šeit ir iegūt veiktspēju, kad tas ir nepieciešams, un akumulatora darbības laiku, ja jums tā nav.
Uz darbvirsmas platformām enerģijas patēriņš ir daudz mazāk problēmu, tādēļ tas nav patiesi nepieciešams. Lielākā daļa lietojumprogrammu paredz, ka katram kodolam ir līdzīgas veiktspējas īpašības, un HMP sistēmu plānošanas procesi ir daudz sarežģītāki par tradicionālajām simetriskām daudzprocesoru sistēmām (tehniski, Windows 10 atbalsta HMP, bet tas galvenokārt paredzēts mobilajiem ierīces, kas izmanto ARM big.LITTLE).
Turklāt lielākā daļa galddatoru un klēpjdatoru procesoru mūsdienās nav termiski vai elektriski ierobežotas līdz vietai, kur dažiem kodoliem jāstrādā ātrāk nekā citi, pat īsiem pārrāvumiem. Mums ir būtiski jāsaskaras ar sienu, cik ātri mēs varam izgatavot atsevišķus serdeņus, tādēļ dažu kodolu aizstāšana ar lēnākiem procesiem neļaus atlikušajiem kodoliem darboties ātrāk.
Lai gan ir daži galddatoru procesori, kam ir viens vai divi serdeņi, kas spēj darboties ātrāk nekā citi, šobrīd šī iespēja ir ierobežota ar dažiem ļoti augstas klases Intel procesoriem (pazīstams kā Turbo Boost Max Technology 3.0), un tas ietver tikai nelielu pieaugumu to serdeņu veiktspēja, kas var darboties ātrāk.
Lai gan, protams, ir iespējams izstrādāt tradicionālu x86 procesoru ar lieliem, ātrajiem serdeņiem un maziem, lēnākiem serdeņiem, lai optimizētu vingrināto slodzi, tādējādi procesoru dizainam tas būtu ievērojami sarežģīti, un, visticamāk, to pareizi neatbalsta.
Veikt hipotētisku procesoru ar diviem ātrajiem Kaba ezera (7. paaudzes) serdeņiem un astoņiem lēniem Goldmont (Atom) serdeņiem. Jums būtu kopā 10 serdeņi, un ļoti vītņotiem darba slodzes, kas optimizētas šāda veida procesoriem, var uztvert veiktspējas un efektivitātes pieaugumu parastā četrkodolu procesora Kaby ezera laikā. Tomēr dažāda veida kodoliem ir pavisam atšķirīgi veiktspējas līmeņi, un lēni serdeņi pat neatbalsta dažus no norādījumiem, ko atbalsta ātras serdes, piemēram, AVX (ARM novērš šo problēmu, pieprasot, lai gan lielie, gan mazie serdeņi atbalstītu tādus pašus norādījumus )
Atkal lielākā daļa Windows balstītu vairāku vītņu lietojumprogrammu pieņem, ka katram kodolam ir tāds pats vai gandrīz tāds pats veiktspējas līmenis un var izpildīt tādus pašus norādījumus, tāpēc šāda veida asimetrija, visticamāk, var radīt ne-ideālu veiktspēju, varbūt pat avarē, ja tas izmanto instrukcijas, ko neatbalsta lēnāki serdeņi. Kaut arī Intel varētu mainīt lēnos kodolus, lai pievienotu uzlabotu instrukciju atbalstu, lai visi serdeņi varētu izpildīt visas instrukcijas, tas neatrisinātu problēmas ar programmatūras atbalstu neviendabīgiem procesoriem.
Cita pieeja lietojumprogrammu izstrādei, kas ir tuvāk tam, ko jūs domājat par savu jautājumu, varētu izmantot GPU, lai paātrinātu ļoti paralēlu pieteikumu daļu. To var izdarīt, izmantojot API, piemēram, OpenCL un CUDA. Attiecībā uz viena mikroshēmu risinājumu AMD veicina aparatūras atbalstu GPU paātrināšanai tā APU, kas apvieno tradicionālo CPU un augstas veiktspējas integrētu GPU ar tādu pašu mikroshēmu, kā Heterogēna sistēmas arhitektūra, lai gan tā neredzēja daudz nozares uzņemšanās ārpus no dažiem specializētiem lietojumiem.
Vai kaut ko pievienot paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem? Šeit skatiet pilnu diskusiju pavedienu.
Attēlu kredīts: Mirko Waltermann (Flickr)