В общем, если вы покупаете новый компьютер, вы должны определить, какой процессор купить, в зависимости от ожидаемой рабочей нагрузки. Производительность в играх, как правило, определяется скоростью одного ядра, тогда как такие приложения, как редактирование видео, определяются количеством ядер.
С точки зрения того, что доступно на рынке - кажется, что все процессоры имеют примерно одинаковую скорость с основными различиями в том, что у них больше потоков или больше ядер.
Например:
- 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 ГГц максимум). Разве второй вариант не будет одинаково хорош в однопоточных рабочих нагрузках, но потенциально лучше в многопоточных рабочих нагрузках?
Я задаю этот вопрос в качестве общего пункта - не конкретно о тех процессорах, которые я перечислил выше, или о какой-то конкретной рабочей нагрузке. Мне просто любопытно, почему шаблон такой, какой он есть.
Ответы:
Это известно как гетерогенная многопроцессорная обработка ( 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, которые сочетают традиционный процессор и высокопроизводительный интегрированный графический процессор на том же чипе, что и гетерогенная системная архитектура , хотя это не вызывает большого интереса со стороны промышленности за ее пределами. из нескольких специализированных приложений.
источник
Вы спрашиваете, почему современные системы используют симметричную многопроцессорность, а не асимметричную многопроцессорность .
Асимметричная многопроцессорная обработка использовалась в старые времена, когда компьютер был огромен и размещался на нескольких устройствах.
Современные процессоры отлиты как одно целое, в одном кристалле, где гораздо проще не смешивать процессоры разных типов, поскольку все они используют одну шину и оперативную память.
Существует также ограничение часов, управляющих циклами ЦП и доступом к ОЗУ. Это станет невозможным при смешивании процессоров разных скоростей. Экспериментальные компьютеры без часов существовали и были даже довольно быстрыми, но сложности современного оборудования наложили более простую архитектуру.
Например, ядра Sandy Bridge и Ivy Bridge не могут работать на разных скоростях одновременно, поскольку шина кэш-памяти L3 работает с той же тактовой частотой, что и ядра, поэтому для предотвращения проблем синхронизации все они должны работать на той же скорости или быть припаркованным / выключенным (ссылка: Архитектура Intel Sandy Bridge Exposed ). (Также проверено в комментариях ниже для Skylake.)
[РЕДАКТИРОВАТЬ] Некоторые люди ошибочно приняли мой ответ, чтобы сказать, что смешивание процессоров невозможно. В их пользу я заявляю: смешивание разных процессоров не выходит за рамки современных технологий, но не делается - вопрос «почему нет». Как было сказано выше, это будет технически сложно, поэтому дороже и будет стоить слишком мало или вообще не будет финансовой выгоды, поэтому не будет интересовать производителей.
Вот ответы на некоторые комментарии ниже:
Турбоусиление достигается за счет ускорения тактовой частоты и изменения некоторых множителей, что и делают люди при разгоне, за исключением того, что аппаратное обеспечение делает это за нас. Часы распределяются между ядрами на одном и том же процессоре, поэтому это равномерно ускоряет весь процессор и все его ядра.
Такие телефоны обычно имеют собственную прошивку и программный стек, связанный с каждым ЦП, более похожий на два отдельных ЦП (или, как ЦП и ГП), и им не хватает единого представления о системной памяти. Эту сложность сложно запрограммировать, поэтому асимметричная многопроцессорная обработка осталась в области мобильной связи, поскольку она требует низкоуровневой разработки программного обеспечения, близкого к аппаратному, что избегает настольных ОС общего назначения. Это причина того, что такие конфигурации не найдены на ПК (за исключением CPU / GPU, если мы достаточно растянем определение).
Ядро либо активно, либо бездействует. Все активные ядра одновременно работают на одной частоте. То, что вы видите, является просто артефактом либо времени, либо усреднения. Я сам также отметил, что Windows не хранит ядро в течение длительного времени, а скорее отдельно паркует / снимает с него все ядра намного быстрее, чем частота обновления Resource Monitor, но я не знаю причину такого поведения, которое, вероятно, обусловлено вышеупомянутое замечание.
Индивидуальные регуляторы напряжения отличаются от тактовой частоты. Не все ядра идентичны - некоторые быстрее. Более быстрые ядра получают немного меньше энергии, создавая запас мощности для увеличения мощности, предоставляемой более слабым ядрам. Регуляторы напряжения ядра будут установлены на максимально низкое значение для поддержания текущей тактовой частоты. Блок управления питанием на ЦПУ регулирует напряжения и при необходимости переопределяет запросы ОС для ядер, отличающихся по качеству. Резюме: Отдельные регуляторы предназначены для обеспечения экономичной работы всех ядер на одной тактовой частоте, а не для настройки отдельных скоростей ядер.
источник
Вполне возможно, что телефон в вашем кармане имеет именно такую схему - ARM big.LITTLE работает именно так, как вы описали. Там даже не разница в тактовой частоте, это могут быть совершенно разные типы ядер - как правило, более медленные такты даже «тупее» (без неупорядоченного выполнения и других оптимизаций ЦП).
По сути, это хорошая идея для экономии батареи, но у нее есть свои недостатки; бухгалтерия для перемещения вещей между различными процессорами более сложная, связь с остальными периферийными устройствами более сложная, и, что наиболее важно, для эффективного использования таких ядер планировщик задач должен быть чрезвычайно умным (и часто «угадывать правильно») ,
Идеальное решение - запускать не критичные ко времени фоновые задачи или относительно небольшие интерактивные задачи на «маленьких» ядрах и пробуждать «большие» только для больших и длинных вычислений (где заканчивается дополнительное время, затрачиваемое на маленькие ядра). потребление большего количества батареи) или для интерактивных задач среднего размера, где пользователь чувствует медлительность на маленьких ядрах.
Однако планировщик имеет ограниченную информацию о виде работы, которую может выполнять каждая задача, и вынужден прибегать к некоторой эвристической (или внешней информации, такой как принудительное использование маски сходства для данной задачи), чтобы решить, где их планировать. Если это не так, вы можете в конечном итоге тратить много времени / энергии на выполнение задачи на медленном ядре и плохо работать с пользователем, или использовать «большие» ядра для задач с низким приоритетом и, таким образом, тратить энергию / энергию. украсть их подальше от задач, которые им понадобятся.
Кроме того, в асимметричной многопроцессорной системе миграция задач на другое ядро, как правило, обходится дороже, чем в SMP-системе, поэтому планировщику обычно приходится делать правильные начальные предположения, а не пытаться работать на случайном свободном ядре и перемещать его. это позже.
Вместо этого Intel выбирает меньшее количество идентичных интеллектуальных и быстрых ядер, но с очень агрессивным масштабированием частоты. Когда процессор загружается, он быстро разгоняется до максимальной тактовой частоты, выполняет работу максимально быстро, а затем сокращает ее, чтобы вернуться в режим минимального энергопотребления. Это не создает особой нагрузки для планировщика и позволяет избежать плохих сценариев, описанных выше. Конечно, даже в режиме низкой тактовой частоты эти ядра являются «умными», поэтому они, вероятно, будут потреблять больше, чем «тупые» ядра с низкой тактовой частотой big.LITTLE.
источник
В прошлом (игры эпохи DOS): Правильно.
В наши дни это уже не так. Многие современные игры имеют многопоточность и выигрывают от нескольких ядер. Некоторые игры уже довольны 4 ядрами, и это число, похоже, со временем растет.
Вроде правда.
Количество ядер * умноженная на скорость ядра * эффективность.
Если вы сравниваете одно и то же ядро с набором идентичных ядер, то вы в основном правы.
Сравнение разных архитектур опасно, но хорошо ...
Частично потому что мы столкнулись с барьером. Дальнейшее увеличение тактовой частоты означает, что требуется больше энергии и больше тепла. Больше тепла означало еще больше энергии. Мы попробовали этот путь, в результате получился ужасный Pentium 4. Горячий и энергоемкий. Трудно охладить. И даже не быстрее, чем грамотно разработанный Pentium-M (P4 на 3,0 ГГц был примерно так же быстр, как P-mob на 1,7 ГГц).
С тех пор мы в основном отказались от увеличения тактовой частоты и вместо этого строим более умные решения. Частично это состояло в том, чтобы использовать несколько ядер с более высокой тактовой частотой.
Например, одно ядро 4 ГГц может потреблять столько же энергии и генерировать столько же тепла, сколько три ядра 2 ГГц. Если ваше программное обеспечение может использовать несколько ядер, это будет намного быстрее.
Не все программное обеспечение может сделать это, но современное программное обеспечение, как правило, может.
Что частично объясняет, почему у нас есть чипы с несколькими ядрами, и почему мы продаем чипы с различным количеством ядер.
Что касается тактовой частоты, думаю, я могу выделить три момента:
Классическим примером этого был 4-ядерный чип AMD. Если было сломано одно ядро, оно было отключено и продавалось как трехъядерный чип. Когда спрос на эти 3 ядра был высоким, даже 3 ядра были проданы как 3-ядерная версия, и при правильном взломе программного обеспечения вы могли бы снова включить 4-е ядро.
И это не только сделано с количеством ядер, это также влияет на скорость. Некоторые чипы работают горячее, чем другие. Слишком жарко и продавайте его как процессор с более низкой скоростью (где более низкая частота также означает меньшее выделение тепла).
И затем есть производство и маркетинг, и это портит это еще дальше.
Мы делаем. В местах, где это имеет смысл (например, мобильные телефоны), у нас часто есть SoC с медленным процессором (малой потребляемой мощностью) и несколькими более быстрыми ядрами. Однако в типичном настольном ПК этого не делается. Это сделало бы установку намного более сложной, более дорогой, и не было бы батареи для разряда.
источник
Если бы мы не были крайне обеспокоены энергопотреблением, не имело бы смысла принимать на себя все расходы, связанные с дополнительным ядром, и не получать от этого ядра как можно большую производительность. Максимальная тактовая частота в значительной степени определяется процессом изготовления, а весь чип изготавливается по одному и тому же процессу. Так в чем же преимущество того, что некоторые ядра будут работать медленнее, чем поддерживается процесс изготовления?
У нас уже есть ядра, которые могут замедляться для экономии энергии. Какой смысл ограничивать их максимальную производительность?
источник
В настоящее время номинальные тактовые частоты на самом деле не имеют большого значения для большинства более крупных процессоров, поскольку все они имеют возможность синхронизировать себя вверх и вниз. Вы спрашиваете, могут ли они синхронизировать разные ядра вверх и вниз независимо.
Я отчасти удивлен многими другими ответами. Современные процессоры могут и делают это. Вы можете проверить это, например, открыв 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
источник
В современной системе вы часто делаете у всех ядер , работающих на разных скоростях. Выключение ядра, которое не используется интенсивно, снижает энергопотребление и тепловую мощность, что хорошо, а такие функции, как «турбонаддув», позволяют одному или двум ядрам работать значительно быстрее, пока другие ядра простаивают, и, следовательно, потребление энергии и тепловая мощность всей упаковки не слишком высока. В случае чипа с такой функцией скорость, которую вы видите в списке, является самой высокой скоростью, которую вы можете получить со всеми ядрами одновременно. И почему все ядра имеют одинаковую максимальную скорость? Ну, все они имеют одинаковую конструкцию, на одном физическом чипе, с одним и тем же полупроводниковым процессом, так почему они должны быть разными?
Причина, по которой все ядра идентичны, заключается в том, что для потока, работающего на одном ядре в одной точке, проще всего запустить на другом ядре в другой точке. Как уже упоминалось ранее, есть часто используемые чипы, которые не следуют этому принципу идентичных ядер, а именно процессоры ARM "big.LITTLE". Хотя, на мой взгляд, самое важное различие между «большими» и «маленькими» ядрами заключается не в тактовой частоте («большие» ядра, как правило, более причудливые, более широкие, более умозрительные ядра, которые получают больше инструкций за такт за счет более высокого энергопотребление, в то время как «маленькие» ядра ближе к единичным, упорядоченным корням с низким энергопотреблением ARM), поскольку они
И, углубляясь в область гетерогенных вычислений, также становится обычным видеть ядра «ЦП» и «ГПУ», интегрированные в один и тот же чип. Они имеют совершенно разные конструкции, запускают разные наборы инструкций, адресуются по-разному и, как правило, также будут работать по-разному.
источник
Быстрая однопоточная производительность и очень высокая многопоточная пропускная способность - это именно то, что вы получаете с таким процессором, как 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.
Вам не нужна гетерогенная архитектура стиля big.LITTLE, чтобы получить большую часть преимуществ. Маленькие ядра в ARM big.LITTLE - довольно дрянные ядра, которые не годятся для вычислительной работы. Дело в том, чтобы просто запустить пользовательский интерфейс с очень низким энергопотреблением. Многие из них не были бы хороши для кодирования видео или другого серьезного перебора чисел. ( @ Lưu Vĩnh Phúc нашел несколько рассуждений о том, почему у x86 нет big.LITTLE . По сути, тратить дополнительное количество кремния на сверхмалое сверхмалое ядро не стоило бы для обычного использования настольного компьютера или ноутбука.)
Это ваше ключевое недоразумение. Вы, кажется, думаете, что одинаковое количество тактов в секунду более полезно, если оно распределено по нескольким ядрам. Это никогда не так. Это больше похоже
(
perf_per_core
это не то же самое, что тактовая частота, потому что Pentium 4 с частотой 3 ГГц будет работать намного меньше за такт, чем Skylake с частотой 3 ГГц.)Что еще более важно, очень редко, когда эффективность составляет 1,0. Некоторые смущающие параллельные задачи действительно масштабируются почти линейно (например, компиляция нескольких исходных файлов). Но кодирование видео не так. Для x264 масштабирование очень хорошо до нескольких ядер, но ухудшается с увеличением количества ядер. Например, от 1 до 2 ядер почти удвоит скорость, но от 32 до 64 ядер поможет гораздо меньше для типичного кодирования 1080p. Точка, в которой скорость плато зависит от настроек. (
-preset veryslow
больше анализирует каждый кадр и может занять больше ядер, чем-preset fast
).С большим количеством очень медленных ядер однопоточные части x264 станут узкими местами. (Например, окончательное кодирование потока битов CABAC. Это эквивалент gzip для h.264 и не распараллеливание.) Наличие нескольких быстрых ядер решило бы это, если бы ОС знала, как это запланировать (или если x264 прикрепил соответствующие потоки к быстрые ядра).
x265 может использовать в своих интересах больше ядер, чем x264, поскольку у него больше анализа, а дизайн WP.2 в h.265 позволяет больше кодировать и декодировать параллелизм. Но даже для 1080p вам не хватает параллелизма для использования в какой-то момент.
Если у вас есть несколько видео для кодирования, хорошо работает несколько видео в параллельном масштабе, за исключением конкуренции за общие ресурсы, такие как емкость и пропускная способность кэша L3, а также пропускная способность памяти. Меньше более быстрых ядер могло бы получить больше преимуществ от того же объема кеша L3, так как им не нужно было бы работать сразу над многими разными частями проблемы.
источник
Несмотря на то, что можно проектировать компьютеры с разными частями, работающими на разных независимых скоростях, для арбитража ресурсов часто требуется возможность быстро решить, какой запрос обслуживать первым, что, в свою очередь, требует знания того, достаточно ли быстро поступил какой-либо другой запрос, чтобы получить приоритет , Решать такие вещи в большинстве случаев довольно просто. Нечто подобное схеме "викторины" может быть реализовано всего с двумя транзисторами. Проблема в том, что принятие быстрых решений, которые надежнооднозначно сложно. Единственный практический способ сделать это во многих случаях - это использовать решение, называемое «синхронизатором», которое может избежать двусмысленности, но вводит задержку в два цикла. Можно было бы разработать контроллер кэширования, который бы надежно осуществлял арбитраж между двумя системами с раздельными тактовыми импульсами, если бы каждый был готов допустить двухтактную задержку для каждой операции, чтобы определить, кто выиграл арбитраж. Однако такой подход был бы менее чем полезен, если бы хотелось, чтобы кэш немедленно отвечал на запросы в отсутствие конкуренции, поскольку даже не оспариваемые запросы по-прежнему имели бы задержку в два цикла.
Запуск всего с общих часов исключает необходимость синхронизации, что, в свою очередь, позволяет избежать двухтактной задержки связи каждый раз, когда необходимо передавать информационные или управляющие сигналы между тактовыми доменами.
источник
Настольные компьютеры уже делают это.
Они имеют (набор) ЦП (ов), с активными 1-72 потоками одновременно, и (набор) GPU (ов) с 16-7168 вычислительными блоками.
Графика является примером задачи, которая, по нашему мнению, эффективна для массивной параллельной работы. Графический процессор оптимизирован для выполнения операций, которые мы хотим выполнять с графикой (но это не ограничивается этим).
Это компьютер с несколькими большими ядрами и множеством маленьких ядер.
В общем, обмен одного ядра в X FLOPS на три ядра в X / 2 FLOPS не стоит; но обмен одного ядра в X FLOPS на сто ядер в X / 5 FLOPS очень того стоит.
При программировании для этого вы генерируете совсем другой код для CPU и для GPU. Много работы сделано, чтобы разделить рабочую нагрузку, чтобы GPU получал задачи, которые лучше всего выполнять на GPU, а CPU - задачи, которые лучше всего выполнять на CPU.
Возможно, гораздо проще написать код для процессора, потому что массивно параллельный код сложнее понять. Таким образом, только когда отдача велика, стоит торговать одноядерной производительностью для многоядерных ситуаций. Графические процессоры дают большую отдачу при правильном использовании.
Теперь мобильные устройства делают это по другой причине. Они имеют ядра с низким энергопотреблением, которые значительно медленнее, но также потребляют значительно меньше энергии на единицу вычислительной мощности. Это позволяет им значительно продлить срок службы батареи, если не выполнять задачи, интенсивно использующие процессор. Здесь мы имеем другой вид "большой отдачи"; не производительность, а энергоэффективность. Все еще требуется много работы со стороны ОС и, возможно, разработчика приложений, чтобы заставить это работать правильно; только большая отдача стоила того.
источник
Причина, по которой обычные системы имеют ядра с одинаковой скоростью, - простая математическая задача. Синхронизация ввода и вывода (с оптимизацией), основанная на одном наборе констант (которые масштабируются = умножаются на количество единиц).
И кто-то здесь сказал, что мобильные устройства имеют несколько процессоров с разными скоростями. Это просто неправда. Это не центральная единица обработки, если она не единица центральной обработки; независимо от того, что производитель говорит, что это или нет. в этом случае [не процессор] это просто «пакет поддержки».
источник
Я не думаю, что ОП понимает основную электронику. Для работы всех компьютеров требуется одна вещь - часы. Циклы, генерируемые внутренними часами, являются метрономом для перемещения всех данных. Для достижения синхронности все операции должны быть привязаны к общим часам. Это верно как для внутреннего выполнения данных на изолированном компьютере, так и для целых сетей.
Если вы хотите изолировать ядра на процессоре, выполняя их на разных частотах, вы наверняка могли бы спроектировать такую платформу. Хотя для этого потребуется разработка решения для материнской платы, которое связывает каждое отдельное ядро с отдельным набором функций материнской платы. У вас останется 4 отдельных компьютера вместо четырехъядерного компьютера.
В качестве альтернативы, как отметил другой человек, вы можете добавить в свое ядро код, который регулирует частоту ядра на индивидуальной основе. Это приведет к снижению производительности. Вы можете иметь скорость или энергоэффективность - но вы не можете иметь и то и другое.
источник