9

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

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

Пожалуйста, поддержите любые претензии ссылками.

4 ответа4

7

Это сильно зависит от того, что вы делаете.

Для обычных Word, Excel, Minesweeper и всего, что еще использует ваша мама, достаточно одного ядра, а больше двух - излишнее. Эти виды приложений проводят большую часть времени в режиме ожидания, ожидая ввода данных пользователем.

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

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

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

5

Я боюсь, что ответ остается, как и всегда, «это зависит от того, что вы делаете».

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

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

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

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

Например, в этом посте Tom's Hardware (с 2009 года) делается попытка взглянуть на производительность нескольких многоядерных процессоров в одновременных приложениях - запустить игру вместе со сканированием AVG (оба из которых, вероятно, являются многопоточными). Четырех-, трех- и двухъядерные процессоры работают одинаково только с игрой, но добавляют одновременное сканирование AVG, и производительность (измеренная по среднему FPS) падает на 22%, 40% и 59% соответственно.

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


И затем вы должны обратить внимание на современные функции процессоров, такие как Intel Turbo Boost / AMD Turbo Core. Эти особенности позволяют многоядерному процессору парковать ядра (переводить их в более медленный режим с низким энергопотреблением) и использовать запасную энергию для разгона ядер, которые остаются активными, - что позволяет процессору оптимизировать себя для обеспечения максимальной вычислительной мощности. насколько это возможно для количества задач, с которыми он представлен.

2

Чтобы добавить масла в огонь, я прочитал здесь, что Android на самом деле замедляется, имея более одного ядра:

Использование многоядерных процессоров может на самом деле замедлить работу устройств Android, сказал Майк Белл, генеральный менеджер группы Intel по мобильным и коммуникационным технологиям, который обвиняет многопоточность в Android или ее отсутствие в трудностях операционной системы в эффективной обработке мощных процессоров.

Чем больше ядер у устройства, тем больше энергии ему требуется - и на данный момент такое количество энергии просто слишком велико для устройств Android, чтобы сбалансировать его.

0

Конечно, это зависит от того, что вы делаете, но да, отдача уменьшается.

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

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

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