Ако някога сте правили много сравнение за пазаруване за нов CPU, може би сте забелязали, че всички ядра имат скорост, а не комбинация от различни. Защо така? Днешната публикация "SuperUser Q & A" е отговорът на въпроса на любознателен читател.
Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.
Дисплеят на SuperUser Джейми иска да разбере защо всички сърцевини на процесора имат една и съща скорост вместо различни:
Като цяло, ако купувате нов компютър, бихте определили кой процесор да купува въз основа на очакваното натоварване на компютъра. Изпълнението на видеоигрите обикновено се определя от единичната скорост, докато приложенията като редактиране на видеоклипове се определят от броя на ядрата. От гледна точка на това, което се предлага на пазара, всички процесори изглежда имат приблизително същата скорост, като основните разлики са по-големи или по-големи.
Например:
- Intel Core i5-7600K, базова честота 3.80 GHz, 4 ядра, 4 конци
- Intel Core i7-7700K, базова честота 4.20 GHz, 4 ядра, 8 нишки
- AMD Ryzen 5 1600X, базова честота 3.60 GHz, 6 ядра, 12 нишки
- AMD Ryzen 7 1800X, базова честота 3.60 GHz, 8 ядра, 16 нишки
Защо виждаме този модел на нарастващи ядра, но всички ядра имат една и съща скорост на часовника? Защо няма варианти с различни тактови честоти? Например, две "големи" ядра и много малки сърцевини.
Вместо четирите ядра на 4,0 GHz (т.е. 4 × 4 GHz, максимум 16 GHz), какво ще кажете за CPU с две ядра, работещи на 4,0 GHz и четири ядра, работещи на 2,0 GHz (т.е. 2 × 4,0 GHz + 4 × 2,0 GHz, максимум 16 GHz)? Дали вторият вариант би бил еднакво добър при натоварвания с единични резби, но потенциално по-добър при натоварване с много нишки?
Питам това като общ въпрос, а не конкретно по отношение на процесорите, изброени по-горе, или за всяко едно специфично натоварване. Просто съм любопитен защо моделът е такъв, какъвто е.
Защо всички сърцевини на процесора имат една и съща скорост вместо различни?
Сътрудникът на SuperUser bwDraco има отговора за нас:
Това е известно като хетерогенна мултипреработка (HMP) и е широко възприето от мобилните устройства. При ARM-базираните устройства, които реализират big.LITTLE, процесорът съдържа ядра с различни профили на производителност и мощност, т.е. някои сърцевини работят бързо, но привличат много енергия (по-бърза архитектура и / или по-високи часовници), докато други са енергийно ефективни, но бавни по-бавна архитектура и / или по-ниски часовници). Това е полезно, защото употребата на електроенергия тенденция се увеличава непропорционално, тъй като увеличавате ефективността, след като изминете определена точка. Идеята тук е да постигнете ефективност, когато имате нужда от нея и живота на батерията, когато не го направите.
На десктоп платформи, консумацията на енергия е много по-малко проблем, така че това не е наистина необходимо. Повечето приложения очакват всяка сърцевина да има подобни характеристики, а процесите на планиране за HMP системите са много по-сложни от планирането на традиционните симетрични системи за многопроцесорна обработка (технически, Windows 10 поддържа HMP, но е предназначен основно за мобилни устройства, които използват ARM big.LITTLE).
Освен това повечето процесори за настолни компютри и лаптопи днес не са термично или електрически ограничени до точката, в която някои сърца трябва да работят по-бързо от други, дори и за кратки изблици. На практика сме ударили стена колко бързо можем да направим индивидуални ядра, така че замяната на някои ядра с по-бавни няма да позволи останалите ядра да се движат по-бързо.
Макар че има няколко настолни процесора, които имат едно или две ядра, които могат да работят по-бързо от другите, тази възможност в момента е ограничена до някои много високи процесори на Intel (известна като Turbo Boost Max Technology 3.0) и включва само малко увеличение за тези ядра, които могат да работят по-бързо.
Макар че със сигурност е възможно да се създаде традиционен процесор x86 с големи, бързи ядра и по-малки, по-бавни ядра за оптимизиране на натоварванията с голяма резба, това би придало значителна сложност на дизайна на процесора и е малко вероятно приложенията да го подкрепят правилно.
Вземете хипотетичен процесор с две бързи ядра Kaby (7-то поколение) и осем бавни Goldmont (Atom) ядра. Вие ще имате общо 10 ядра и силно натоварени натоварвания, оптимизирани за този тип процесори, могат да видят повишаване на производителността и ефективността в сравнение с обикновен четириядрен процесор на Kaby Lake. Различните типове сърцевини обаче имат много различни нива на производителност, а бавните ядра дори не поддържат някои от инструкциите, които поддържат бързото сърце, като AVX (ARM избягва този проблем, като изисква големи и LITTLE ядра да поддържат същите инструкции ).
Отново повечето приложения с множество конци, базирани на Windows, приемат, че всяко ядро има същото или почти същото ниво на производителност и може да изпълнява същите инструкции, така че този вид асиметрия вероятно ще доведе до по-малко от идеално изпълнение, може би дори ако се използват инструкции, които не се поддържат от бавните сърцевини. Докато Intel може да променя бавните ядра, за да добави разширена поддръжка на инструкциите, така че всички ядра да могат да изпълняват всички инструкции, това няма да разреши проблеми със софтуерната поддръжка на хетерогенни процесори.
Различен подход към дизайна на приложенията, по-близо до това, за което вероятно мислите за вашия въпрос, би използвал графичния процесор за ускоряване на много паралелни части от приложения. Това може да стане чрез API като OpenCL и CUDA. Що се отнася до решение с едно чип, AMD популяризира хардуерната поддръжка за GPU ускорение в своите APU, което съчетава традиционния CPU и високопроизводителните GPU в един и същ чип, както архитектурата на Heterogeneous System, макар че това не е видяло много поглъщане на индустрията извън на няколко специализирани приложения.
Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.
Image Credit: Мирко Уолтърман (Flickr)