16

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

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

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

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


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

5 ответов5

12

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

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

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

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

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

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


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

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

- Intel

2

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

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

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

2

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

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

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

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

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

2

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

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

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

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


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

  • Производительность процессора больше не зависит от тактовой частоты или количества ядер - другие части процессора становятся узкими местами по мере повышения тактовой частоты и количества ядер.
  • для большинства пользователей производительность процессора даже не является узким местом для начала. Если вы проводите свое время в размещенных приложениях, таких как Google Docs, скорость вашей сетевой карты будет иметь значение больше, чем скорость вашего ядра процессора. Если вы смотрите или редактируете фильм с высоким разрешением, производительность жесткого диска будет иметь большее значение. Так далее...
1

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

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

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

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

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