Обновление с одноядерного до двухъядерного - увеличится ли пропускная способность вдвое?

485
Karthik Balaguru

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

4

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

9
John Feminella

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

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

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

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

  • Это может ухудшить ситуацию, если слишком много переключений контекста из-за зависимостей между процессами или если вам нужно синхронизировать вещи между процессами.

5
James Kingsbery

См. Http://en.wikipedia.org/wiki/Amdahl%27s_law для хорошего описания того, почему это не удвоит вашу пропускную способность, и как проанализировать, каким будет улучшение на самом деле.

Привет Джеймс, Очень Хорошая Ссылка! Karthik Balaguru 13 лет назад 0
@James +1 За изучение чего-то нового. Я слышал «закон убывающей доходности», используемый для описания этой проблемы, но «закон Амдала» для меня новый. Спасибо за это. Evan Plaice 13 лет назад 0
0
driis

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

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

0
Chris Dodd

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

0
Paul R

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

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