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

25428
Jamie

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

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

Например:

  • 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 ГГц). Разве второй вариант не будет одинаково хорош для однопоточных рабочих нагрузок, но потенциально лучше для многопоточных рабочих нагрузок?

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

79
Существует много мобильных телефонов с быстрыми и медленными ядрами, и почти на всех современных многоядерных серверах частота ядра процессора зависит от нагрузки в зависимости от нагрузки, а некоторые даже отключают ядра, когда они не используются. На компьютере общего назначения, где вы не разрабатываете для экономии энергии, однако наличие только двух типов ядер (CPU и GPU) просто делает платформу более гибкой. eckes 6 лет назад 15
Прежде чем планировщик потоков сможет сделать разумный выбор в отношении того, какое ядро ​​использовать, он должен определить, может ли процесс использовать преимущества нескольких ядер. Надежное выполнение этого было бы очень проблематичным и подверженным ошибкам. Особенно, когда это может изменяться динамически в соответствии с потребностями приложения. Во многих случаях планировщик должен был сделать субоптимальный выбор, когда использовалось лучшее ядро. Одинаковые ядра упрощают работу, обеспечивают максимальную гибкость и, как правило, имеют лучшую производительность. LMiller7 6 лет назад 5
Нельзя сказать, что тактовые частоты являются аддитивными, как вы описали. Наличие четырех ядер, работающих на частоте 4 ГГц, не означает, что у вас есть «общее» значение 16 ГГц, и не означает, что эти 16 ГГц могут быть разделены на 8 процессоров, работающих на 2 ГГц, или 16 процессоров, работающих на 1 ГГц. Bob Jarvis 6 лет назад 33
Аналогичным образом рассмотрим, как [линейные корабли дредноутов] (https://en.wikipedia.org/wiki/Dreadnought), которые имели единую основную батарею, заменили [линейные корабли дредноутов] (https: //en.wikipedia .org / wiki / Pre-dreadnought_battleship) с основной батареей из самых больших орудий, промежуточной батареей, которая была меньше, и батареей против торпедного катера, которая была еще меньше. Bob Jarvis 6 лет назад 1
4 ядра при 4 ГГц не означают, что он работает на 16 ГГц. Параллельная обработка не работает таким образом. А AFAIK AMD очень долго поддерживал разные тактовые частоты для разных ядер phuclv 6 лет назад 0
Суть вопроса просто неверна. Современные процессоры прекрасно способны работать с ядрами на разных скоростях phuclv 6 лет назад 16
Проголосовал за открытие. Кроме того, конструкции big.LITTLE в SoC ARM являются обычным явлением, когда более мелкие ядра имеют совершенно другую конструкцию (иногда другую архитектуру), имеют меньшую тактовую частоту и намного более энергоэффективны, в то время как большие используются, когда экран включен для приложений в на переднем плане. Horn OK Please 6 лет назад 1
[Многоядерный процессор: могу ли я сказать, что у меня процессор 3x2,1 ГГц = 6,3 ГГц?] (Https://superuser.com/q/423596/241386), [Как рассчитать тактовую частоту в многоядерных процессорах? ] (https://superuser.com/q/167131/241386), phuclv 6 лет назад 4
см. обсуждения здесь [big.LITTLE x86: почему бы и нет?] (https://techreport.com/forums/viewtopic.php?t=115945), [Intel и концепция big.LITTLE] (https: // форумы. anandtech.com/threads/intel-and-the-big-little-concept.2279950/) phuclv 6 лет назад 2
@ LưuVĩnhPhúc Конечно, расчет не работает так - если бы он сделал вопрос был бы по сравнению с равными, это буквально весь смысл вопроса. Пример просто для сравнения. Процессоры, способные работать с разными ядрами на разных скоростях, будут применяться к любой комбинации ядер. Тем не менее, спасибо за ссылки. Jamie 6 лет назад 0
Еще один момент, на который следует обратить внимание: большинство современных процессоров Intel и AMD могут динамически масштабировать тактовую частоту в зависимости от выполняемой ими задачи. Мой 4790K обычно работает на частоте около 2 ГГц, когда я просто просматриваю Интернет, но затем поднимается до 4 ГГц +, когда я играю. SGR 6 лет назад 1
@ LưuVĩnhPhúc intel также может долгое время запускать ядра на разных тактовых частотах. Baldrickk 6 лет назад 0
@Baldrickk AMD более откровенна, особенно с FX и особенно с разблокированными «скрытыми» ядрами, они были заблокированы по причине и, как правило, должны быть перегружены. mckenzm 6 лет назад 0
@BobJarvis: 16 ГГц не может быть точно разделен на 8 процессоров по 2 ГГц, конечно, но не может ли это быть достаточно близко? в отличие от противоположного направления? Mehrdad 6 лет назад 0
В наши дни у людей возникают такие проблемы с интерпретацией того, что означает «Intel Core i5-7600K, базовая частота 3,80 ГГц, 4 ядра, 4 потока». Можете ли вы представить, если бы у вас был список технических терминов о * каждом отдельном ядре в пакете *? Это было бы маркетинговым безумием, и все, кроме Истинных Ботаников, были бы сбиты с толку. Intel потратила 30 лет на то, чтобы сделать свои обозначения чипов доступными для потребителей, поэтому они (несколько) недавно перешли на маркировку i3 / i5 / i7, потому что в противном случае люди не знали, был ли конкретный процесс «быстрым» или «медленным». ». Christopher Schultz 6 лет назад 0

12 ответов на вопрос

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

В Windows уже есть понятия «Приложения», «Фоновые процессы» и «Процессы Windows». Так что это не распространяется на аппаратный уровень? Jamie 6 лет назад 1
@Jamie «фоновый» процесс получает меньшие временные интервалы и с большей вероятностью будет прерван. Windows 10 в некоторой степени учитывает HMP-системы, хотя пока не так много информации о том, как это сделать. Bob 6 лет назад 2
Так что я думаю, что после редактирования @bwDraco довольно много ответил за меня. Если бы существовал «смешанный» процессор, он мог бы легко поддерживать тот же набор инструкций, если бы он был построен таким образом, поэтому нам понадобился бы какой-то планировщик, чтобы выбрать правильное ядро. Я думаю, что действительно приложения, которые выигрывают от большого количества маленьких ядер, возможно, выиграют еще больше от большого количества маленьких ядер. Таким образом мы имеем ускорение GPU. Jamie 6 лет назад 0
Обратите внимание, что в случае с графическим процессором 2 больших ядра продаются не за 10 маленьких и медленных ядер, а (очень грубый) эквивалент торговли двумя большими ядрами за 1024 маленьких и медленных ядра. Массивно параллельный, а не просто немного более параллельный. Yakk 6 лет назад 3
Этот вопрос касается процессоров, но я думаю, что для подразумеваемого вопроса важно отметить, что компьютеры фактически уже делают это на материнской плате. Хотя не имеет смысла запускать ЦП на разных скоростях, а не только на самых быстрых из доступных, разные чипы и шины на материнской плате уже работают на более низких тактовых частотах, предназначенных для компромисса между стоимостью материалов и разработкой по сравнению с производительностью. JFA 6 лет назад 0
Вероятно, Intel могла бы получить ядро ​​Goldmont для выполнения инструкций AVX2 без большого количества кремния (медленно, путем декодирования до пар 128b операций). В Knight's Landing (Xeon Phi) есть ядра на базе Silvermont с AVX512, поэтому модифицировать Silvermont совсем не обязательно. Но KNL добавляет неупорядоченное выполнение для векторных инструкций, в то время как обычный Silver / Goldmont делает только OOO для целых чисел, поэтому они, вероятно, захотят разработать его ближе к Goldmont, чем KNL. В любом случае, наборы insn не являются реальной проблемой. Именно поддержка ОС и небольшая выгода являются реальным препятствием на пути к потере памяти на ядре с низким энергопотреблением. Peter Cordes 6 лет назад 4
если я посмотрю на частоту отдельных ядер, я вижу, что некоторые ядра работают быстрее, чем другие, но максимальная скорость одинакова для всех ядер. Suici Doga 6 лет назад 0
66
harrymc

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

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

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

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

Например, ядра 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 имеют встроенные регуляторы напряжения, которые обеспечивают отдельные напряжения и частоты для каждого ядра

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

Ах. больше mshorter и в точку. +1 Hennes 6 лет назад 3
Насколько я понимаю, если ядро ​​имеет скорость 4,0 ГГц, оно может составить 40 * 100 МГц. Так что, если бы у вас было ядро ​​с частотой 4,0 ГГц и другое ядро ​​с частотой 2,0 ГГц, разве они не могли быть сломаны как 40 * 100 МГц и 20 * 100 МГц? Это то, что вы подразумеваете под «часами»? Так это проблема? Аргумент о том, что проще разыграть один кубик, является аргументом только в том случае, если нет достаточного преимущества для разыгрыша двух ядер разного размера. Jamie 6 лет назад 0
Тактовые импульсы управляют всем, что делает ЦП, поскольку данные передаются в нем шагами, которые управляются тактовыми импульсами. Часы здесь не для того, чтобы сообщать время, но для того, чтобы отмечать время между входом и выходом подсхем, поэтому вычисления должны переходить от одного шага к другому, а также этапы доступа к ОЗУ. Часы используются для синхронизации, и было бы трудно синхронизировать два ЦП, которые не имеют одинаковую синхронизацию между шагами или даже одинаковыми шагами. harrymc 6 лет назад 3
@harrymc есть блоки синхронизатора, которые прекрасно справляются с этим; DRAM работает медленнее, чем скорость ядра, и вы можете динамически запускать ядра Intel с разными скоростями на одном и том же чипе. pjc50 6 лет назад 6
@ Jamie умножение часов (см. «PLL») обычно «умножается на X делится на Y», где X ограничен несколькими вариантами, а Y может варьироваться более широко. Вы можете иметь одно ядро ​​на частоте 4 ГГц, а другое - на частоте 2 ГГц или даже 3,9 ГГц, если хотите, но есть штраф в несколько циклов за пересечение тактовых доменов. pjc50 6 лет назад 1
@ pjc50: блоки синхронизации и т. д. между процессорами сделают архитектуру слишком сложной и дорогостоящей. Любое ценовое преимущество, полученное при создании такого процессора «среднего класса», будет потеряно таким образом, так что нет никакого смысла. Кроме того, большинство современных ОС однозначно ориентированы на симметричную многопроцессорность. harrymc 6 лет назад 1
Процессоры Intel Core-серии все время работают на разных скоростях на одном кристалле. Nick T 6 лет назад 10
@NickT: все одновременно. harrymc 6 лет назад 0
@ Боб: Вопрос в том, почему процессоры все одинаковы. Общеизвестно, что современные ОС могут варьировать энергопотребление и даже парковать ядра. harrymc 6 лет назад 2
Единственное существование архитектур big.LITTLE и независимое от ядра повышение тактовой частоты доказывает, что вы не правы. Гетерогенная многопроцессорная обработка является основным направлением. Это ** можно ** сделать, ** это сделано в телефонах, но по некоторым причинам ** не в настольных компьютерах. Agent_L 6 лет назад 9
@Agent_L: причина в сложности. Настольные процессоры уже достаточно дороги. Поэтому я повторяю: все возможно, но на самом деле вопрос в том, почему этого не сделано, а не в том, можно ли это сделать. Не нападайте на меня, как если бы я утверждал, что это невозможно - все, что я говорю, это то, что это слишком сложно, дорого и слишком мало, чтобы заинтересовать производителей. harrymc 6 лет назад 9
Сейчас лучше, но, имхо, вам стоит подробнее разобраться, почему это делается в телефонах, а в компьютерах - меньше. Я полагаю, что это корень вопроса, и вы просто упомянули его пока без какого-либо реального объяснения. Упоминание часовых конструкций - это просто отвлечение, я бы его отбросил. Вы буквально написали «невозможно», и оно все еще доступно для доступа к тактовой частоте ОЗУ - когда это вполне возможно и на настольных компьютерах: одноядерный турбодвигатель вводит разницу в тактовой частоте. Никто не нападает на вас, но очевидно ложные заявления, которые вы сделали. Или подкрепите их лучше, может быть, я неправильно получаю турбо-буст Agent_L 6 лет назад 2
@Agent_L: Я не знаю точно, как осуществляется турбо-ускорение, но думаю, что это ускоряет тактовую частоту и некоторые множители, как и при разгоне. Часы делятся, что ускоряет весь процессор и * все его ядра *. Для телефонов: у них обычно есть специальная прошивка и программный стек, связанный с каждым ЦП, более похожий на два отдельных ЦП (или как ЦП и ГП), и не имеющий единого представления о системной памяти. Эту сложность сложно программировать, поэтому AMP остается в сфере мобильной связи, поскольку требует низкоуровневой разработки программного обеспечения, близкого к оборудованию, которое избегает настольных ОС общего назначения. harrymc 6 лет назад 2
«Часы распределяются между ядрами на одном и том же процессоре, так что это ускоряет равномерную работу всего процессора и всех его ядер». Неправильно. Многие из нас предоставили множество доказательств того, что разные ядра работают на разных часах на одном кристалле в одно и то же время. Практически каждый большой современный процессор делает это. Grant Wu 6 лет назад 3
Мой сервер с 2x Xeon E5-2670 v3 (12 ядер с HT) в настоящее время имеет ядра на 1,3 ГГц, 1,5 ГГц, 1,6 ГГц, 2,2 ГГц, 2,5 ГГц, 2,7 ГГц, 2,8 ГГц, 2,9 ГГц и многие другие скорости. На самом деле, редко что `cat / proc / cpuinfo | grep МГц | uniq -c` показывает дубликаты. Nick T 6 лет назад 2
@NickT: ядро ​​либо активно, либо бездействует. Все активные ядра одновременно работают на одной частоте. То, что вы видите, является просто артефактом либо времени, либо усреднения. Например, ядра Sandy Bridge и Ivy Bridge не могут работать на разных скоростях в одно и то же время, так как шина кэша L3 работает на той же тактовой частоте, что и ядра, поэтому для предотвращения проблем синхронизации все они должны работать на той же скорости. или отключить ([ссылка] (http://www.anandtech.com/show/3922/intels-sandy-bridge-architecture-exposed/4)). harrymc 6 лет назад 3
@harrymc Спасибо, сегодня я узнал что-то новое. Agent_L 6 лет назад 1
Пожалуйста, удалите неверную информацию о E5-2670 v3. Цитируя http://ieeexplore.ieee.org/document/7284406/: «Недавно представленные процессоры Intel Xeon E5-1600 v3 и E5-2600 v3 под кодовым названием Haswell-EP вносят значительные изменения по сравнению со своими предшественниками. Среди них изменения - встроенные регуляторы напряжения, которые позволяют индивидуальные напряжения и частоты для каждого ядра. " Grant Wu 6 лет назад 1
@GrantWu: отдельные регуляторы напряжения отличаются от тактовой частоты. Не все ядра одинаковы - некоторые быстрее. Более быстрые ядра получают немного меньше энергии, создавая запас мощности для увеличения мощности, предоставляемой более слабым ядрам. Регуляторы напряжения ядра будут установлены на максимально низкое значение для поддержания * текущей тактовой частоты *. Блок управления питанием на ЦПУ регулирует напряжения и при необходимости переопределяет запросы ОС для ядер, отличающихся по качеству. Резюме: Отдельные регуляторы предназначены для обеспечения экономичной работы всех ядер на одной тактовой частоте, а не для настройки отдельных скоростей ядер. harrymc 6 лет назад 1
«которые обеспечивают индивидуальные напряжения и частоты для каждого ядра» »Это позволяет использовать для каждого ядра pstates (PCPS) [14] вместо одного p-состояния для всех ядер, как в предыдущих продуктах. Более тонкая гранулярность областей напряжения и частоты позволяет учитывать энергию среды выполнения и операционные системы для снижения энергопотребления одноядерных процессоров при сохранении производительности других ядер на высоком уровне ». «Предыдущие поколения процессоров Intel использовали либо фиксированную частоту ядра (Nehalem-EP и Westmere-EP), либо общую частоту для ядер и ядра (Sandy Bridge-EP и Ivy Bridge-EP)». Grant Wu 6 лет назад 0
@GrantWu: Это не противоречит тому, что я сказал, просто дает больше аппаратных деталей. harrymc 6 лет назад 1
Да, это так. Он говорит "отдельные ... частоты" для каждого ядра. Или посмотрите на https://stackoverflow.com/questions/2619745/mutli-core-processors-does-each-core-run-at-the-full-clock-speed-or-some-frac Grant Wu 6 лет назад 1
Или посмотрите на реферат https://aspire.eecs.berkeley.edu/wp/wp-content/uploads/2014/07/Per-Core-DVFS-With-Switched-Capacitor.pdf ", который очень желательно Самостоятельно контролировать питание и тактовую частоту для каждого ядра ": Grant Wu 6 лет назад 0
@GrantWu: Это не заменяет тактовую частоту процессора - оно используется только для регулировки скорости, чтобы следовать за часами. Вероятно, это механизм, используемый для реализации турбонаддува и гомогенизации ядер (производительность ядер может отличаться, так как не все ядра идентичны при изготовлении). harrymc 6 лет назад 1
При ближайшем рассмотрении я думаю, что @harrymc является правильным. Начиная с Skylake, все ядра все еще имеют тактовый домен. Хотя общедоступная литература немного расплывчата в том, ссылается ли она просто на базовые часы или ядра также имеют множитель; последнее подразумевается. Bob 6 лет назад 0
47
Matteo Italia

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

Вполне возможно, что телефон в вашем кармане поддерживает именно такую ​​схему - ARM big.LITTLE работает именно так, как вы описали. Там даже не просто разница в тактовой частоте, это могут быть совершенно разные типы ядер - как правило, более медленные такты даже «тупее» (без неупорядоченного выполнения и других оптимизаций ЦП).

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

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

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

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


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

Эвристика должна быть довольно простой. Любое вынужденное переключение задач (использование полного временного интервала) является признаком того, что медленный процессор не подходит для этой задачи. Очень низкое использование и все произвольные переключения задач указывают на то, что задача может быть перемещена в медленный процессор. R.. 6 лет назад 1
Другая проблема заключается в том, что 4 глупых ядра с частотой 2 ГГц могут занимать больший размер кристалла, чем 2 умных ядра с частотой 4 ГГц, или они могут быть меньше и потреблять гораздо меньше энергии, чем ядра с частотой 4 ГГц, но работать также намного медленнее. phuclv 6 лет назад 3
@R .: В принципе, я согласен с вами, но даже включив некоторую базовую поддержку планировщика для этого, я увидел нелепое столкновение ядра на плате ARM, которую я использовал, так что должно быть что-то еще. Кроме того, большинство «обычных» многопоточных программ написано с учетом SMP, поэтому нет ничего необычного в том, что пулы потоков могут быть такими же большими, как общее количество ядер, а задания тянутся на медленных ядрах. Matteo Italia 6 лет назад 2
@Ramhound: 10-ядерная часть мощностью 120 Вт имеет бюджет мощности 12 Вт на ядро ​​(за исключением одноядерного турбо-режима). Вот почему самые высокие одноядерные часы находятся в четырехъядерных процессорах, например, у Intel [i7-6700k] (https://ark.intel.com/products/88195/Intel-Core-i7-6700K-Processor -8M-Cache-up-до-4_20-ГГц) имеет бюджет мощности 91 Вт для 4 ядер: 22,75 Вт на ядро, поддерживаемое всеми активными ядрами (при 4,0 ГГц даже при рабочей нагрузке AVX2 + FMA, такой как Prime95). По этой же причине запас по одноядерному Turbo занимает всего 0,2 ГГц по сравнению с 22-ядерным Broadwell E5-2699v4 с 2,2 ГГц при 145 Вт, 3,6 ГГц с турбонаддувом. Peter Cordes 6 лет назад 1
@Ramhound: добавлено [ответ] (https://superuser.com/questions/1222372/why-do-we-have-cpus-with-all-the-cores-at-the-same-speeds-and-not -combination-o / 1223791 # 1223791), который расширяет это. Многоядерный Xeon, по-видимому, * точно * ищет OP: работает с большим количеством ядер с низким энергопотреблением или тратит много энергии на работу с одним потоком, когда это возможно (турбо). Peter Cordes 6 лет назад 0
14
Hennes

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

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

Как я уже отмечал, «я задаю этот вопрос в качестве общего пункта, а не конкретно о тех процессорах, которые я перечислил выше», и была причина, по которой я привел два примера для каждой архитектуры. Если мы будем рассматривать два сценария как 1. все большие ядра и 2. два больших и два маленьких - тогда я думаю, что все упомянутые вами пункты применимы к обоим случаям, т.е. теоретическая максимальная одноядерная скорость, пакетирование чипов, разгон, когда он не используется. Jamie 6 лет назад 1
Одно ядро ​​с максимальной скоростью не так уж и интересно, когда его не выбирают. Планировщики должны быть обновлены, чтобы фактически отдать предпочтение высокоскоростным ядрам. Hennes 6 лет назад 0
10
David Schwartz

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

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

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

Это то, о чем я думал. Зачем намеренно использовать некоторые низшие компоненты, когда все они могут быть элитными? +1. MPW 6 лет назад 2
@MPW Выбор не между созданием большого ядра и последующей его стерилизацией, а между большим и маленьким ядрами. Поскольку у вас есть два конкурирующих сценария - производительность одного потока и производительность нескольких потоков - почему бы не максимизировать оба? Знаем ли мы, что вы не можете изготовить чип с несколькими большими и маленькими ядрами? Jamie 6 лет назад 1
@Jamie Вы можете изготовить чип с несколькими большими и маленькими ядрами. Но меньшие ядра не будут работать на более низкой тактовой частоте. David Schwartz 6 лет назад 0
Они были бы, если бы они были спроектированы таким образом ... Вопрос в том, почему они не спроектированы таким образом с нуля, не беря существующий процесс изготовления и не стерилизуя его. Jamie 6 лет назад 0
@ Джейми, я не понимаю, что ты говоришь. Весь ЦП должен быть выполнен с одним и тем же процессом изготовления, а максимальная тактовая частота в значительной степени является характеристикой процессов изготовления. Ядра, для которых требуется более низкая тактовая частота на том же уровне изготовления, как правило, были бы * более * сложными и занимали бы больше места, в противном случае, зачем им нужна более низкая тактовая частота? David Schwartz 6 лет назад 0
Может быть, я не знаю достаточно о процессе изготовления, чтобы понять. Не могли бы вы создать два разных ядра на одном процессоре в одном процессе? - т.е. ядро 4,0 ГГц (40 * 100 МГц) и ядро ​​2,0 ГГц (20 * 100 МГц). Некоторые процессоры имеют встроенные чипы, это часть процесса изготовления или она добавляется позже? Существует определенная валюта в добавлении сложности - если конечный результат того стоит. Jamie 6 лет назад 0
@ Джейми Конечно, ты можешь это сделать. Но, вероятно, ядро ​​2,0 ГГц будет больше и сложнее, что потребует его работы на более низкой частоте. (Зачем еще он должен работать на более низкой частоте, даже если он построен с тем же процессом изготовления?) David Schwartz 6 лет назад 0
9
Grant Wu

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

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

Я отчасти удивлен многими другими ответами. Современные процессоры могут и делают это. Вы можете проверить это, например, открыв 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

Вы отвечаете на другой вопрос. Вопрос в том, много ли больших ядер против пары больших ядер и много маленьких ядер - достоинства двух сценариев. В обеих ситуациях вы можете увеличивать и уменьшать частоту в зависимости от спроса или увеличивать ядро. Jamie 6 лет назад 0
Я так не читаю вопрос. Вопрос не затрагивает архитектурно разные ядра, несмотря на использование слов «большой» и «маленький». Он ориентирован исключительно на тактовую частоту. Grant Wu 6 лет назад 3
8
hobbs

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

Причина, по которой все ядра идентичны, заключается в том, что потоку, работающему на одном ядре в одной точке, проще всего запустить на другом ядре в другой точке. Как уже упоминалось, есть часто используемые чипы, которые не следуют этому принципу идентичных ядер, а именно процессоры ARM "big.LITTLE". Хотя, на мой взгляд, самое важное различие между «большими» и «маленькими» ядрами заключается не в тактовой частоте («большие» ядра, как правило, более причудливые, более широкие, более умозрительные ядра, которые получают больше инструкций за такт за счет более высокого энергопотребление, в то время как «маленькие» ядра ближе к единичным, упорядоченным корням с низким энергопотреблением ARM), так как они

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

7
Peter Cordes

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


в то время как такие приложения, как редактирование видео, определяются количеством ядер. [Разве 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. Это эквивалент gzip для h.264 и не распараллеливание.) Наличие нескольких быстрых ядер решило бы это, если бы ОС знала, как запланировать это (или если x264 прикрепил соответствующие потоки к быстрые ядра).

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


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

4
supercat

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

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

4
Yakk

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

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

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

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

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

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

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

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

Похожие вопросы