/ / Защо всички CPU ядра имат една и съща скорост вместо различни?

Защо всички CPU ядра имат една и съща скорост вместо различни?

Ако някога сте правили много пазаруване за сравнениеза нов процесор може би сте забелязали, че всички ядра имат скоростта, а не комбинация от различни. Защо така? Днешната публикация на SuperUser Q&A има отговор на въпрос на любопитен читател.

Днешната сесия „Въпроси и отговори“ идва при нас от любезното съдействие на SuperUser - подразделение на Stack Exchange, общностно групиране на Q&A уебсайтове.

Въпроса

Четецът на 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), какво ще кажете за процесор с две ядра, работещи на 4,0 GHz и четири ядра, работещи на 2,0 GHz (т.е. 2 × 4,0 GHz + 4 × 2,0 GHz, 16 GHz максимум)? Дали вторият вариант би бил еднакво добър при натоварвания с една резба, но потенциално по-добър при многорезбови натоварвания?

Задавам това като общ въпрос, а не конкретно по отношение на процесорите, изброени по-горе, или за някаква конкретна натовареност. Просто ми е любопитно защо моделът е какъв е.

Защо всички ядра на процесора имат една и съща скорост вместо различни?

Отговорът

SuperUser сътрудник bwDraco има отговор за нас:

Това е известно като разнородна мулти-обработка(HMP) и е широко възприет от мобилните устройства. В ARM-базирани устройства, които реализират big.LITTLE, процесорът съдържа ядра с различни профили на производителност и мощност, т.е. някои ядра работят бързо, но черпят много енергия (по-бърза архитектура и / или по-високи часовници), докато други са енергийно ефективни, но бавни ( по-бавна архитектура и / или по-ниски часовници). Това е полезно, тъй като използването на електроенергия има тенденция да се увеличава непропорционално, докато увеличавате производителността, след като преминете определена точка. Идеята тук е да постигнете производителност, когато имате нужда от нея и живот на батерията, когато нямате.

На настолните платформи консумацията на енергия е многопо-малко от проблем, така че това не е наистина необходимо. Повечето приложения очакват всяко ядро ​​да има сходни характеристики на работата, а процесите на планиране за HMP системите са много по-сложни от планирането на традиционните симетрични системи за много обработка (SMP) (технически 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 насърчава хардуерната поддръжка за ускорение на графичния процесор в своите APU, което съчетава традиционния процесор и високоефективния интегриран графичен процесор в същия чип, като Heterogeneous System Architecture, макар че това не е забелязало много индустрията да погълне отвън на няколко специализирани приложения.


Имате какво да добавите към обяснението? Озвучете в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange, работещи в технологиите? Вижте цялата дискусионна тема тук.

Кредитна снимка: Мирко Валтерман (Flickr)