Домашняя » как » Почему все процессорные ядра имеют одинаковую скорость, а не разные?

    Почему все процессорные ядра имеют одинаковую скорость, а не разные?

    Если вы когда-либо делали много сравнительных покупок для нового процессора, вы, возможно, заметили, что все ядра, кажется, имеют скорость, а не комбинацию разных. Это почему? Сегодняшний пост SuperUser Q & A содержит ответ на любопытный вопрос читателя.

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

    Вопрос

    Читатель SuperUser Джейми хочет знать, почему все ядра процессора имеют одинаковую скорость, а не разные:

    В общем, если вы покупаете новый компьютер, вы должны определить, какой процессор купить, исходя из ожидаемой нагрузки на компьютер. Производительность в видеоиграх, как правило, определяется скоростью одного ядра, тогда как такие приложения, как редактирование видео, определяются количеством ядер. С точки зрения того, что доступно на рынке, кажется, что все процессоры имеют примерно одинаковую скорость, с основными отличиями в том, что у них больше потоков или больше ядер..

    Например:

    • Intel Core i5-7600K, базовая частота 3,80 ГГц, 4 ядра, 4 потока
    • Intel Core i7-7700K, базовая частота 4,20 ГГц, 4 ядра, 8 потоков
    • AMD Ryzen 5 1600X, базовая частота 3,60 ГГц, 6 ядер, 12 потоков
    • AMD Ryzen 7 1800X, базовая частота 3,60 ГГц, 8 ядер, 16 потоков

    Почему мы видим эту тенденцию увеличения ядер, но все ядра имеют одинаковую тактовую частоту? Почему нет вариантов с разными тактовыми частотами? Например, два «больших» ядра и множество маленьких ядер.

    Вместо, скажем, четырех ядер с тактовой частотой 4,0 ГГц (то есть 4 × 4 ГГц, максимум 16 ГГц), как обстоят дела с процессором с двумя ядрами с тактовой частотой 4,0 ГГц и четырьмя ядрами с тактовой частотой 2,0 ГГц (т. Е. 2 ​​× 4,0 ГГц + 4 × 2,0)? ГГц, максимум 16 ГГц) Будет ли второй вариант одинаково хорош в однопоточных рабочих нагрузках, но потенциально лучше в многопоточных рабочих нагрузках?

    Я задаю это как общий вопрос, а не конкретно в отношении процессоров, перечисленных выше, или в отношении какой-либо конкретной рабочей нагрузки. Мне просто любопытно, почему шаблон такой, какой он есть?.

    Почему все ядра процессора имеют одинаковую скорость, а не разные?

    Ответ

    Участник 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 позволяет избежать этой проблемы, требуя, чтобы и большое ядро, и ядро ​​LITTLE поддерживали одинаковые инструкции ).

    Опять же, большинство многопоточных приложений на базе Windows предполагают, что каждое ядро ​​имеет одинаковый или почти одинаковый уровень производительности и может выполнять одни и те же инструкции, поэтому асимметрия такого типа, скорее всего, приведет к неидеальной производительности, возможно, даже падает, если он использует инструкции, не поддерживаемые более медленными ядрами. Хотя Intel может модифицировать медленные ядра для добавления расширенной поддержки команд, чтобы все ядра могли выполнять все инструкции, это не решило бы проблем с программной поддержкой гетерогенных процессоров..

    Другой подход к разработке приложений, более близкий к тому, о чем вы, вероятно, думаете в своем вопросе, будет использовать графический процессор для ускорения высокопараллельных частей приложений. Это можно сделать с помощью таких API, как OpenCL и CUDA. Что касается одночипового решения, AMD продвигает аппаратную поддержку ускорения графических процессоров в своих APU, которая объединяет традиционный процессор и высокопроизводительный интегрированный графический процессор в один и тот же чип, что и архитектура гетерогенных систем, хотя это не вызывает большого интереса со стороны отрасли за ее пределами. из нескольких специализированных приложений.


    Есть что добавить к объяснению? Отключить звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полным обсуждением здесь.

    Изображение предоставлено: Мирко Вальтерманн (Flickr)