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

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

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

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

    Въпроса

    Четецът на суперпотребителя Джейми иска да знае защо всички ядра на процесора имат еднаква скорост вместо различни:

    Като цяло, ако купувате нов компютър, ще определите кой процесор да закупите въз основа на очакваното работно натоварване за компютъра. Изпълнението на видеоигрите се определя от скоростта на едно ядро, докато приложения като видео редактиране се определят от броя на ядрата. По отношение на това, което се предлага на пазара, изглежда, че всички процесори имат приблизително еднаква скорост, като основните разлики са повече нишки или повече ядра..

    Например:

    • 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 Lake (7-то поколение) и осем бавни Goldmont (Atom) ядра. Вие ще имате общо 10 ядра, а силно натоварените натоварвания, оптимизирани за този вид процесор, могат да видят повишаване на производителността и ефективността в сравнение с нормалния четириядрен процесор Kaby Lake. Различните видове ядра обаче имат различни нива на производителност, а бавните ядра дори не поддържат някои от инструкциите, които поддържат бързите ядра, като AVX (ARM избягва този проблем, като изисква и големите и малките ядра да поддържат същите инструкции. ).

    Отново, повечето базирани на Windows многопоточни приложения приемат, че всяко ядро ​​има същото или почти същото ниво на изпълнение и може да изпълнява същите инструкции, така че този вид асиметрия вероятно ще доведе до по-малко от идеалното изпълнение, може би дори сривове, ако използва инструкции, които не се поддържат от по-бавните ядра. Въпреки че Intel може да модифицира бавните ядра, за да добави разширена поддръжка на инструкции, така че всички ядра да могат да изпълняват всички инструкции, това няма да разреши проблеми със софтуерната поддръжка за хетерогенни процесори.

    Различният подход към дизайна на приложенията, по-близо до това, което вероятно си мислите във вашия въпрос, ще използва GPU за ускоряване на силно паралелни части от приложенията. Това може да се направи с помощта на API като OpenCL и CUDA. Що се отнася до едно-чип решението, AMD насърчава хардуерната поддръжка на GPU ускорение в APU, което комбинира традиционен процесор и високопроизводителна интегрирана видеокарта в един и същи чип, като Heterogeneous System Architecture, въпреки че това не е видяло много промишленост навън няколко специализирани приложения.


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

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