79

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

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

Например:

  • 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 ГГц (т.е. максимум 4x4 ГГц ~ 16 ГГц), как обстоят дела с процессором с двумя ядрами, работающими на 4,0 ГГц и четырьмя ядрами, работающими на 2 ГГц (то есть 2x4,0 ГГц)+ 4x2,0 ГГц (максимум 16 ГГц). Разве второй вариант не будет одинаково хорош для однопоточных рабочих нагрузок, но потенциально лучше для многопоточных рабочих нагрузок?

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

12 ответов12

82

Это известно как гетерогенная многопроцессорная обработка (HMP) и широко применяется в мобильных устройствах. В ARM-устройствах, которые реализуют большие.МАЛЕНЬКИЙ, процессор содержит ядра с различными профилями производительности и мощности, например, некоторые ядра работают быстро, но потребляют много энергии (более быстрая архитектура и / или более высокие тактовые частоты), в то время как другие являются энергосберегающими, но медленными (более медленная архитектура и / или более низкие тактовые частоты). Это полезно, потому что энергопотребление имеет тенденцию непропорционально увеличиваться по мере того, как вы увеличиваете производительность, как только достигнете определенного уровня. Идея в том, чтобы получить производительность, когда она вам нужна, и время автономной работы, когда вы этого не делаете.

На настольных платформах энергопотребление является гораздо меньшей проблемой, поэтому в этом нет необходимости. Большинство приложений ожидают, что каждое ядро будет иметь одинаковые характеристики производительности, и процессы планирования для систем HMP намного сложнее, чем планирование для традиционных систем SMP. (Технически Windows 10 имеет поддержку HMP, но в основном она предназначена для мобильных устройств, использующих ARM.НЕМНОГО.)

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

Хотя есть несколько процессоров для настольных ПК, которые имеют одно или два ядра, способных работать быстрее, чем другие, в настоящее время эта возможность ограничена определенными процессорами 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, которые сочетают традиционный процессор и высокопроизводительный интегрированный графический процессор на том же чипе, что и архитектура гетерогенной системы, хотя это не вызывает большого интереса со стороны промышленности за ее пределами. из нескольких специализированных приложений.

66

Вы спрашиваете, почему современные системы используют симметричную многопроцессорность, а не асимметричную многопроцессорность.

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

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

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

Например, ядра Sandy Bridge и Ivy Bridge не могут работать на разных скоростях в одно и то же время, так как шина кэша L3 работает на той же тактовой частоте, что и ядра, поэтому для предотвращения проблем синхронизации все они должны работать на той же скорости. или быть припаркованным / выключенным (ссылка: Архитектура Intel Sandy Bridge Exposed). (Также проверено в комментариях ниже для Skylake.)

[РЕДАКТИРОВАТЬ] Некоторые люди ошибочно приняли мой ответ, чтобы сказать, что смешивание процессоров невозможно. В их пользу я заявляю: смешивание разных процессоров не выходит за рамки современных технологий, но не делается - вопрос "почему нет". Как было сказано выше, это будет технически сложно, поэтому дороже и будет стоить слишком мало или вообще не будет финансовой выгоды, поэтому не будет интересовать производителей.

Вот ответы на некоторые комментарии ниже:

Turbo Boost изменяет скорости процессора, чтобы их можно было менять

Турбоусиление достигается за счет ускорения тактовой частоты и изменения некоторых множителей, что и делают люди при разгоне, за исключением того, что аппаратное обеспечение делает это за нас. Часы распределяются между ядрами на одном и том же процессоре, поэтому это равномерно ускоряет весь процессор и все его ядра.

Некоторые телефоны имеют более одного процессора разной скорости

Такие телефоны обычно имеют собственную прошивку и программный стек, связанный с каждым ЦП, более похожим на два отдельных ЦП (или, как ЦП и ГП), и им не хватает единого представления о системной памяти. Эту сложность сложно запрограммировать, поэтому асимметричная многопроцессорная обработка осталась в области мобильной связи, поскольку она требует низкоуровневой разработки программного обеспечения, близкого к аппаратному, что избегает настольных ОС общего назначения. Это причина того, что такие конфигурации не найдены на ПК (за исключением CPU/GPU, если мы достаточно растянем определение).

Мой сервер с 2x Xeon E5-2670 v3 (12 ядер с HT) в настоящее время имеет ядра на 1,3 ГГц, 1,5 ГГц, 1,6 ГГц, 2,2 ГГц, 2,5 ГГц, 2,7 ГГц, 2,8 ГГц, 2,9 ГГц и многие другие скорости.

Ядро либо активно, либо бездействует. Все активные ядра одновременно работают на одной частоте. То, что вы видите, является просто артефактом либо времени, либо усреднения. Я сам также отметил, что Windows не хранит ядро в течение длительного времени, а скорее отдельно паркует / снимает с него все ядра гораздо быстрее, чем частота обновления Resource Monitor, но я не знаю причину такого поведения, которое, вероятно, обусловлено вышеупомянутое замечание.

Процессоры Intel Haswell имеют встроенные регуляторы напряжения, которые обеспечивают отдельные напряжения и частоты для каждого ядра

Индивидуальные регуляторы напряжения отличаются от тактовой частоты. Не все ядра одинаковы - некоторые быстрее. Более быстрые ядра получают немного меньше энергии, создавая запас мощности для увеличения мощности, предоставляемой более слабым ядрам. Регуляторы напряжения ядра будут установлены на максимально низкое значение для поддержания текущей тактовой частоты. Блок управления питанием на ЦПУ регулирует напряжения и при необходимости переопределяет запросы ОС для ядер, отличающихся по качеству. Резюме: Отдельные регуляторы предназначены для экономичной работы всех ядер на одной тактовой частоте, а не для установки отдельных скоростей ядер.

47

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

Вполне возможно, что телефон в вашем кармане имеет именно такую компоновку - ARM большой.МАЛЕНЬКИЙ работает точно так, как вы описали. Там даже не просто разница в тактовой частоте, это могут быть совершенно разные типы ядер - как правило, более медленные такты даже "тупее" (без неупорядоченного выполнения и других оптимизаций ЦП).

По сути, это хорошая идея для экономии батареи, но у нее есть свои недостатки; бухгалтерия для перемещения вещей между разными процессорами более сложная, связь с остальными периферийными устройствами более сложная и, что наиболее важно, для эффективного использования таких ядер планировщик задач должен быть чрезвычайно умным (и часто "угадывать правильно"),

Идеальное решение - запускать не критичные ко времени фоновые задачи или относительно небольшие интерактивные задачи на "маленьких" ядрах и пробуждать "большие" только для больших и длинных вычислений (где дополнительное время, затрачиваемое на маленькие ядра, заканчивается потребление большего количества батареи) или для интерактивных задач среднего размера, где пользователь чувствует медлительность на маленьких ядрах.

Однако планировщик имеет ограниченную информацию о виде работы, которую может выполнять каждая задача, и вынужден прибегать к некоторой эвристической (или внешней информации, такой как принудительное использование маски сходства для данной задачи), чтобы решить, где их планировать. Если это не так, вы можете в конечном итоге тратить много времени / энергии на выполнение задачи на медленном ядре и плохо работать с пользователем, или использовать "большие" ядра для задач с низким приоритетом и, таким образом, тратить энергию / энергию. украсть их от задач, которые потребуются им.

Кроме того, в асимметричной многопроцессорной системе миграция задач на другое ядро, как правило, обходится дороже, чем в SMP-системе, поэтому планировщик, как правило, должен сделать правильное первоначальное предположение вместо того, чтобы пытаться работать на произвольном свободном ядре и перемещать его. это позже.


Вместо этого Intel выбирает меньшее число идентичных интеллектуальных и быстрых ядер, но с очень агрессивным масштабированием частоты. Когда процессор загружается, он быстро разгоняется до максимальной тактовой частоты, выполняет работу максимально быстро, а затем уменьшает ее, чтобы вернуться в режим минимального энергопотребления. Это не накладывает особой нагрузки на планировщик и позволяет избежать плохих сценариев, описанных выше. Конечно, даже в низком тактовом режиме эти ядра являются "умными", поэтому они, вероятно, будут потреблять больше, чем "глупые" большие.МАЛЕНЬКИЕ сердечники.

14

Производительность в играх, как правило, определяется скоростью одного ядра,

В прошлом (игры эпохи DOS): Правильно.
В наши дни это уже не так. Многие современные игры являются многопоточными и имеют несколько ядер. Некоторые игры уже довольны 4 ядрами, и это число, похоже, со временем растет.

в то время как такие приложения, как редактирование видео, определяются количеством ядер.

Вроде правда.

Количество ядер * умноженная на скорость ядра * эффективность.
Если вы сравниваете одно и то же ядро с набором идентичных ядер, то вы в основном правы.

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

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

Сравнение разных архитектур опасно, но хорошо ...

Итак, почему мы видим эту тенденцию увеличения ядер со всеми ядрами, имеющими одинаковую тактовую частоту?

Частично потому, что мы натолкнулись на барьер. Дальнейшее увеличение тактовой частоты означает, что требуется больше энергии и больше тепла. Больше тепла означало еще больше энергии. Мы попробовали этот путь, результатом был ужасный Pentium 4. Горячий и сильный голод. Трудно охладить. И даже не быстрее, чем разумно разработанный Pentium-M (P4 на 3,0 ГГц был примерно так же быстр, как P-mob на 1,7 ГГц).

С тех пор мы в основном отказались от увеличения тактовой частоты, и вместо этого мы создаем более разумные решения. Частично это было связано с использованием нескольких ядер на более высокой тактовой частоте.

Например, одно ядро 4 ГГц может потреблять столько же энергии и генерировать столько же тепла, сколько три ядра 2 ГГц. Если ваше программное обеспечение может использовать несколько ядер, это будет намного быстрее.

Не все программное обеспечение может сделать это, но современное программное обеспечение обычно может.

Что частично объясняет, почему у нас есть чипы с несколькими ядрами, и почему мы продаем чипы с различным количеством ядер.

Что касается тактовой частоты, думаю, я могу выделить три момента:

  • Процессоры с низким энергопотреблением имеют смысл во многих случаях, когда необработанная скорость не требуется. Например, контроллеры домена, настройки NAS, ... Для этого у нас есть процессоры с более низкой частотой. Иногда даже с большим количеством ядер (например, 8-кратный низкоскоростной процессор имеет смысл для веб-сервера).
  • В остальном мы обычно приближаемся к максимальной частоте, которую мы можем сделать без перегрева нашего текущего дизайна. (скажем, от 3 до 4 ГГц с нынешним дизайном).
  • И вдобавок ко всему, мы делаем биннинг. Не все CPU генерируются одинаково. Некоторые процессоры имеют плохие оценки или плохие результаты в части своих чипов, эти компоненты отключены и продаются как другой продукт.

Классическим примером этого был 4-ядерный чип AMD. Если одно ядро было сломано, оно было отключено и продавалось как трехъядерный чип. Когда спрос на эти 3 ядра был высоким, даже 3 ядра были проданы как 3-ядерная версия, и при правильном взломе программного обеспечения вы могли бы снова включить 4-е ядро.

И это не только сделано с количеством ядер, это также влияет на скорость. Некоторые чипы работают горячее, чем другие. Слишком жарко и продавайте его как процессор с более низкой скоростью (где более низкая частота также означает меньше выделяемого тепла).

И затем есть производство и маркетинг, и это портит это еще дальше.

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

Мы делаем. В местах, где это имеет смысл (например, мобильные телефоны), у нас часто есть SoC с медленным процессором ядра (с низким энергопотреблением) и несколькими более быстрыми ядрами. Однако в типичном настольном ПК этого не делается. Это сделало бы настройку намного более сложной, более дорогой, и не было бы батареи для разряда.

10

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

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

У нас уже есть ядра, которые могут замедляться для экономии энергии. Какой смысл ограничивать их максимальную производительность?

9

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

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

Я отчасти удивлен многими другими ответами. Современные процессоры могут и делают это. Вы можете проверить это, например, открыв CPU-Z на смартфоне - мой Google Pixel вполне способен работать с разными ядрами на разных скоростях:

Номинально он равен 2,15 ГГц, но два ядра работают на 1,593 ГГц, а два - на 1,132 ГГц.

Фактически, начиная с 2009 года основные процессоры Intel имеют логику для повышения отдельных ядер на более высоком уровне при одновременном разгоне других ядер, что позволяет повысить производительность одноядерных процессоров, оставаясь в рамках бюджета TDP: http://www.anandtech.com/show/2832/4

Более новые процессоры Intel с "Favored Core" (маркетинговый термин Intel) характеризуют каждое ядро на заводе с самыми быстрыми ядрами, способными повысить сверхвысокую скорость:http://www.anandtech.com/show/11550/the-intel -skylakex-обзор-ядро-i9-7900x-i7-7820x-и-i7-7800x испытания /7

У чипов AMD Bulldozer была примитивная версия этого: http://www.anandtech.com/show/4955/the-bulldozer-review-amd-fx8150-tested/4

Вероятно , это есть и в новых чипах Ryzen от AMD, хотя здесь об этом прямо не сказано: http://www.anandtech.com/show/11170/the-amd-zen-and-ryzen-7-review-a-deep-dive -он-1800x-1700x-и-1700/11

8

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

Причина, по которой все ядра идентичны, заключается в том, что потоку, работающему на одном ядре в одной точке, проще всего запустить на другом ядре в другой точке. Как упоминалось в другом месте, есть часто используемые чипы, которые не следуют этому принципу идентичных ядер, а именно ARM "большой".МАЛЕНЬКИЙ "ЦП. Хотя, на мой взгляд, самое важное различие между "большими" и "маленькими" ядрами заключается не в тактовой частоте ("большие" ядра, как правило, более причудливые, более широкие, более умозрительные ядра, которые получают больше инструкций за такт за счет более высокого энергопотребление, в то время как "маленькие" ядра располагаются ближе к единичным выпускам ARM с низким энергопотреблением, поскольку они имеют разный дизайн на одном и том же чипе, но, как правило, также имеют разные максимальные тактовые частоты.

И, углубляясь в область гетерогенных вычислений, также становится все более привычным видеть ядра "CPU" и "GPU", интегрированные в один и тот же чип. Они имеют совершенно разные конструкции, запускают разные наборы инструкций, адресуются по-разному и, как правило, также будут работать по-разному.

7

Быстрая однопоточная производительность и очень высокая многопоточная пропускная способность - это именно то, что вы получаете с таким процессором, как Intel Xeon E5-2699v4.

Это 22-ядерный Broadwell. Поддерживаемая тактовая частота составляет 2,2 ГГц со всеми активными ядрами (например, кодирование видео), но одноядерный макс турбо - 3,6 ГГц.

Таким образом, при выполнении параллельной задачи он использует свой бюджет мощности 145 Вт в качестве 22 ядер по 6,6 Вт. Но при выполнении задачи с несколькими потоками тот же бюджет мощности позволяет нескольким ядрам работать на частоте до 3,6 ГГц. (Более низкая пропускная способность одноядерной памяти и L3-кэша в большом Xeon означает, что он может работать не так быстро, как настольный четырехъядерный процессор на частоте 3,6 ГГц. Одно ядро в настольном процессоре Intel может использовать гораздо больше общей пропускной способности памяти.)

Тактовая частота 2,2 ГГц является низкой из-за тепловых ограничений. Чем больше ядер у процессора, тем медленнее они должны работать, когда все они активны. Этот эффект не очень велик в 4-х и 8-ми ядерных процессорах, о которых вы упомянули в вопросе, потому что 8 не так много ядер, и у них очень высокий уровень энергопотребления. Даже настольные процессоры-энтузиасты заметно демонстрируют этот эффект: Intel Skylake-X i9-7900X представляет собой 10c20t-часть с базовой частотой 3,3 ГГц, максимальная турбо 4,5 ГГц. Это намного больше одноядерного турбо запаса мощности, чем у i7-6700k (4,0 ГГц устойчивый / 4,2 ГГц турбо без разгона).

Масштабирование частоты / напряжения (DVFS) позволяет одному и тому же ядру работать в широком диапазоне кривой производительности / эффективности. См. Также эту презентацию IDF2015 по управлению питанием Skylake, в которой много интересных деталей о том, что ЦП могут делать эффективно, и о соотношении производительности и эффективности как статически во время разработки, так и на лету с DVFS.

На другом конце спектра процессоры Intel Core-M имеют очень низкую постоянную частоту, например 1,2 ГГц при 4,5 Вт, но могут работать на частоте до 2,9 ГГц. С активными несколькими ядрами они будут работать с более эффективной тактовой частотой, как гигантские Xeon.

Вам не нужно гетерогенное большое.МАЛЕНЬКАЯ архитектура стиля, чтобы получить большую часть выгоды. Маленькие ядра в ARM большие.LITTLE - довольно дурацкие ядра, которые не подходят для вычислительной работы. Дело в том, чтобы просто запустить пользовательский интерфейс с очень низким энергопотреблением. Многие из них не будут хороши для кодирования видео или другого серьезного перебора чисел. (@ Lưu Vĩnh Phúc нашел несколько дискуссий о том, почему x86 не имеет большого размера.МАЛЕНЬКИЙ. В принципе, тратить дополнительное количество кремния на очень медленное ядро с очень низким энергопотреблением не стоит для обычного использования настольного компьютера или ноутбука.)


в то время как такие приложения, как редактирование видео, определяются количеством ядер. [Разве 2x 4,0 ГГц + 4x 2,0 ГГц не будут лучше при многопоточной рабочей нагрузке, чем 4x 4 ГГц?]

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

cores * perf_per_core * (scaling efficiency)^cores

(perf_per_core - это не то же самое, что тактовая частота, потому что Pentium 4 с частотой 3 ГГц будет работать намного меньше за такт, чем Skylake с частотой 3 ГГц.)

Что еще более важно, очень редко, когда эффективность составляет 1,0. Некоторые смущающие параллельные задачи действительно масштабируются почти линейно (например, компиляция нескольких исходных файлов). Но кодирование видео не так. Для x264 масштабирование очень хорошо до нескольких ядер, но ухудшается с увеличением количества ядер. Например, от 1 до 2 ядер почти удвоит скорость, но от 32 до 64 ядер поможет гораздо меньше для типичного кодирования 1080p. Точка, в которой скорость плато зависит от настроек. (-preset veryslow выполняет больший анализ каждого кадра и может занять больше ядер, чем -preset fast).

С большим количеством очень медленных ядер однопоточные части x264 станут узкими местами. (например, окончательное кодирование потока битов CABAC. Это h.264 эквивалент gzip и не распараллеливается.) Наличие нескольких быстрых ядер решило бы это, если бы операционная система знала, как планировать это (или если x264 прикрепил соответствующие потоки к быстрым ядрам).

x265 может использовать в своих интересах больше ядер, чем x264, поскольку у него больше анализа, а дизайн WP.2 в h.265 позволяет больше кодировать и декодировать параллелизм. Но даже для 1080p вам не хватает параллелизма для использования в какой-то момент.


Если у вас есть несколько видео для кодирования, хорошо работает несколько видео в параллельном масштабе, за исключением конкуренции за общие ресурсы, такие как емкость и пропускная способность кэша L3 и пропускная способность памяти. Меньшее количество более быстрых ядер могло бы принести больше пользы от того же объема кеша L3, поскольку им не нужно было бы одновременно работать с таким большим количеством различных частей проблемы.

4

Несмотря на то, что можно проектировать компьютеры с разными частями, работающими на разных независимых скоростях, для арбитража ресурсов часто требуется возможность быстро решить, какой запрос обслуживать первым, что, в свою очередь, требует знания того, достаточно ли быстро поступил какой-либо другой запрос, чтобы получить приоритет , Решать такие вещи в большинстве случаев довольно просто. Нечто подобное схеме "викторины" может быть реализовано всего с двумя транзисторами. Проблема заключается в том, что быстро принимать решения, которые надежно однозначна трудно. Единственный практический способ сделать это во многих случаях - это использовать решение, называемое "синхронизатором", которое может избежать двусмысленности, но вводит задержку в два цикла. Можно было бы разработать контроллер кэширования, который надежно осуществлял бы арбитраж между двумя системами с раздельными часами, если бы каждый был готов допустить задержку в два цикла для каждой операции, чтобы определить, кто выиграл арбитраж. Однако такой подход был бы менее чем полезен, если бы хотелось, чтобы кэш-память немедленно отвечала на запросы в отсутствие конкуренции, поскольку даже не оспариваемые запросы по-прежнему имели бы задержку в два цикла.

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

4

Настольные компьютеры уже делают это.

Они имеют (набор) ЦП (ов) с 1-72 активными потоками одновременно и (набор) графических процессоров с 16-7168 вычислительными блоками.

Графика - это пример задачи, которую мы нашли эффективной параллельной работой. Графический процессор оптимизирован для выполнения операций, которые мы хотим выполнять с графикой (но это не ограничивается этим).

Это компьютер с несколькими большими ядрами и множеством маленьких ядер.

В общем, обменять одно ядро в X FLOPS на три ядра в X/2 FLOPS не стоит; но обмен одного ядра в X FLOPS на сто ядер в X/5 FLOPS очень того стоит.

При программировании для этого вы генерируете совсем другой код для CPU и для GPU. Много работы сделано, чтобы разделить рабочую нагрузку, чтобы GPU получал задачи, которые лучше всего выполнять на GPU, а CPU - задачи, которые лучше всего выполняются на CPU.

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

Теперь мобильные устройства делают это по другой причине. Они имеют ядра с низким энергопотреблением, которые значительно медленнее, но также потребляют значительно меньше энергии на единицу вычислительной мощности. Это позволяет им значительно продлить срок службы батареи, если не выполнять задачи, интенсивно использующие процессор. Здесь мы имеем другой вид "большой отдачи"; не производительность, а энергоэффективность. Все еще требуется много работы со стороны ОС и, возможно, разработчика приложений, чтобы заставить это работать правильно; только большая отдача стоила того.

-1

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

И кто-то здесь сказал, что мобильные устройства имеют несколько процессоров с разными скоростями. Это просто неправда. Это не центральная единица обработки, если она не является единицей центральной обработки; независимо от того, что производитель говорит, что это или нет. в этом случае [не процессор] это просто "пакет поддержки".

-10

Я не думаю, что ОП понимает основную электронику. Для работы всех компьютеров требуется одна вещь - часы. Тактовые циклы, генерируемые внутренними часами, являются метрономом для перемещения всех данных. Для достижения синхронности все операции должны быть привязаны к общим часам. Это верно как для внутреннего выполнения данных на изолированном компьютере, так и для целых сетей.

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

В качестве альтернативы, как отметил другой человек, вы можете добавить в свое ядро код, который регулирует частоту ядра в индивидуальном порядке. Это приведет к снижению производительности. Вы можете иметь скорость или энергоэффективность - но вы не можете иметь и то и другое.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .