Является ли более высокое число ядер или более высокая тактовая частота более полезными для производительности компьютера? [закрыто]

16

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

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

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

Каковы некоторые примеры общих процессов (например, шифрование, сжатие файлов, редактирование изображений / видео), которые больше всего выиграют от того или иного? Существуют ли какие-то процессы, которые могут быть, но в настоящее время (по техническим причинам) не ускоряются за счет увеличения их параллелизма?


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

Прорвать
источник
9
Все будет зависеть от того, что вы хотите сделать на этом компьютере. Несколько ядер хороши для одних вещей, более высокие тактовые частоты для других.
ChrisF
@ChrisF Я лично знаю ответ, но я спрашиваю это по двум причинам. Во-первых, разместить эту информацию на веб-сайте (я видел ее только в отношении двух- или четырехъядерных процессоров), а во-вторых, попытаться дать людям представление о том, что произойдет «в будущем», и показать, что приложения обеих сторон уравнения.
Прорыв
3
Я бы сказал, что хотя это хороший вопрос для обсуждения, когда у вас есть пинта, это не очень хороший вопрос обмена стека.
EBGreen
1
Слишком много переменных, что если и другие параметры + текущие технологические изменения, чтобы разработать краткий ответ, который будет актуален в течение более определенного периода времени. Это интересная тема для форума или блога, но не то, что можно назвать «ответом». Я проголосовал за то, чтобы закрыться по этой причине, так что пусть пламя начнется !!!
Linker3000

Ответы:

12

Есть две основные ситуации, которые следует учитывать:

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

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

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

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

Однако многоядерный ! = Более высокая скорость или более высокая производительность во всех случаях. Поскольку большинство программ написаны для одноядерной обработки * , тактовая частота все еще важна. Необходимо учитывать комбинацию обоих факторов (наряду со многими другими факторами) .


* Есть несколько программ, и, надеюсь, скоро будет создано больше, где можно будет использовать несколько ядер одновременно. Будущее программного обеспечения находится с этим « Параллельное программирование »:

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

- Intel

Джеймс Мертц
источник
Лучший ответ, который я когда-либо видел, +1. Знаете ли вы, можно ли ускорить шифрование / дешифрование с помощью какого-то параллельного алгоритма (или такая вещь вообще существует)?
Прорыв
2

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

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

Теперь Intel позволяет вам питать ядра по требованию. Хотя и не так оптимально, как отсутствие ядер для сна, возможность использовать больше ядер дает вам возможность запускать больше приложений на одной аппаратной платформе.

surfasb
источник
2

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

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

Однако вы забыли одну из самых распространенных задач, выполняемых сегодня на компьютерах: просмотр страниц. Несколько популярных браузеров открывают каждую вкладку в отдельном процессе (я уверен, что это Chrome - единственный, который я использую), а это означает, что если в четырехъядерной системе открыто четыре вкладки, каждое окно просмотра может (теоретически) иметь ядро ​​"для себя" (игнорируя потоки ОС и прочее), и работать так же быстро, как если бы не было других открытых вкладок / окон браузера. Для людей, которые одновременно открывают множество вкладок, это может стать серьезным улучшением производительности без необходимости создавать чрезвычайно быстрые ядра ЦП.

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


Другие ответы также содержат пару важных моментов:

  • Производительность процессора больше не зависит от тактовой частоты или количества ядер - другие части процессора становятся узкими местами по мере повышения тактовой частоты и количества ядер.
  • для большинства пользователей производительность процессора даже не является узким местом для начала. Если вы проводите свое время в размещенных приложениях, таких как Google Docs, скорость вашей сетевой карты будет иметь значение больше, чем скорость вашего ядра процессора. Если вы смотрите или редактируете фильм с высоким разрешением, производительность жесткого диска будет иметь большее значение. И т.д...
Томас Ашан
источник
+1 за то, что он задумался и действительно придумал объяснения, но я хотел бы отметить одну вещь: да, некоторые браузеры помещают каждую вкладку в отдельный процесс , но это делается только в случае сбоя процесса. Большинство браузеров, по крайней мере, запускают каждую вкладку в отдельном потоке, а операционные системы имеют возможность запускать несколько потоков (из одного процесса) на разных ядрах.
Прорыв
IE 9 делает многопроцессный метод. Тем не менее, я считаю, что они используют определенное количество процессов и просто делят все вкладки между этими процессами. Это приводит к гораздо меньшему количеству процессов, чем может завершить Chrome, но при этом означает, что вы потеряете лишь несколько вкладок, если все это будет сделано в одной куче с оттенком Редмонда.
music2myear
Да, и это также зависит от программного обеспечения. В то время как ОС обычно может обрабатывать управление трафиком и отправлять ожидающие потоки на доступные ядра (ментальное представление о match.com, происходящем в моем ужасном кремнии), многопоточные программы (большинство продуктов Adobe Creative Suite и другие хорошо поддерживаемые) современные средства разработки мультимедиа) будут намного лучше использовать возможности многоядерной системы.
music2myear
2

Во-первых, одноядерные скорости на самом деле не так сильно упали. Единственная причина, по которой нынешняя линейка Intel Sandy Bridge не превосходит одноядерные Pentium 4 с точки зрения мегагерц, заключается в том, что у Intel нет конкуренции, поэтому им не приходится так сильно настаивать.

Во-вторых, тактовая частота - это еще не все, даже на одном ядре. Если посмотреть на производительность приложений, опять же, в сравнении с Pentium 4, текущая линейка Intel на 50% быстрее за такт . Причины, по которым Sandy Bridge работает быстрее за такт, чем Pentium 4 (Prescott был последним воплощением), многочисленны, но имеют интеллектуальный контроллер памяти с предварительной выборкой, контроллер памяти на том же кристалле с процессором и более высокий уровень параллелизма на уровне инструкций (ILP). способствовать этому.

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

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

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

ЦУС
источник
1

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

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

  • количество ядер
  • количество потоков параллельной работы
  • Семейство процессоров (Dual Core, Pentium, Core i / Calpella, Sandy Bridge и т. д.)
  • генерация процессора (2-й, 6-й и т. д.), а затем
  • тактовая частота процессора.

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

Диого
источник
Да, но для упрощения предположим, что все остальное одинаково (одинаковое количество кеша на ядро, одинаковая ширина адресной шины, одинаковый размер слова и т. Д.). Сами ядра одинаковы, просто а) сколько или б) как быстро.
Прорыв
Хм, семейство и поколение процессоров не имеют никакого отношения к скорости процессора. В конце концов, процессоры Atom намного новее, чем P4s или процессоры Core и Core2, но никто никогда не станет утверждать, что они быстрее. Другими вещами, которые имеют более непосредственное влияние на скорость процессора, являются встроенный кэш, количество регистров, архитектура чипа, размер проводящих путей (процесс изготовления нм), возможности работы с плавающей запятой и т. Д.
music2myear
@ music2myear - когда речь идет о поколении, я говорю о семье ( superuser.com/questions/314757/… ). На самом деле Atom D525 лучше, чем многие из Core 2 ( cpubenchmark.net/cpu_lookup.php?cpu=Intel+Atom+D525+%40+1.80GHz )
Диого