В других вопросах было показано, что из-за состояния компьютерных приложений многоядерные процессоры страдают от уменьшения отдачи. Это все еще так в современном мире?
Используют ли большинство новых приложений многопоточность и, таким образом, используют преимущества нескольких ядер? Если нет, то помогают ли более новые 64-битные ОС использовать ядра, назначая задачи / процессы различным ядрам? Или многоядерные процессоры все еще продолжают страдать от того же (или аналогичного) убывающего дохода?
Пожалуйста, поддержите любые претензии ссылками.
cpu
multi-core
community-faq-proposed
rishimaharaj
источник
источник
Ответы:
Это сильно зависит от того, что вы делаете.
Для обычных Word, Excel, Minesweeper и для всего, что еще использует ваша мама, одного ядра все же достаточно, а более двух - это избыточное убийство. Такие приложения проводят большую часть времени в режиме ожидания, ожидая ввода данных пользователем.
Для игр вы выиграете как минимум от двух. После этого все зависит от игры. Теоретически вы можете запустить каждого противника ИИ в отдельном потоке, но центральная игровая логика не может быть легко распараллелена - вам нужно одно место, где все результаты объединяются, чтобы сформировать согласованное игровое состояние. Так что обычно есть один «основной» поток, который все ждут.
Для мультимедиа, анализа реальных чисел и науки каждое ядро имеет значение. Это задачи, которые по своей сути являются многопоточными или могут быть легко выполнены, и у разработчиков есть сильный стимул использовать все доступные вычислительные мощности.
Опытные пользователи любят многозадачность. Torrent, VirtualBox, захват экрана, видео, майнкрафт и просмотр веб-страниц работают одновременно. Таким образом, вы получите выгоду от каждого приложения, загруженного процессором, имеющего собственное ядро. В настоящее время популярно транслировать вашу игру. Так что это два ядра для игры, по крайней мере, еще одно для потока кодировщика, и, по крайней мере, еще одно для остальной системы. Это как минимум 4 ядра.
источник
Боюсь, что ответ остается, как и всегда, «это зависит от того, что вы делаете».
Да, отдача от добавления все большего количества ядер уменьшается, и всегда будет, если вы одновременно запускаете только одно приложение .
Даже в хорошо сделанном многопоточном приложении многие задачи, выполняемые с помощью многопоточности, выполняются таким образом, чтобы ждать самых медленных компонентов в машине - жесткого диска, работы в сети - без ущерба для очевидной производительности для пользователя. Они не могут быть улучшены большей параллелизацией, поэтому любой теоретический предел ускорения недоступен для практических целей.
Стоит отметить, что есть несколько «больших» приложений, которые не являются многопоточными (просто проверьте эквивалент диспетчера задач вашей ОС, он должен быть в состоянии сказать вам, сколько принадлежит каждому процессу - мой Firefox в настоящее время использует, например, 31 ).
Конечно, запуск нескольких независимых приложений не ограничен этими ограничениями. Добавляя больше ядер, вы можете запускать больше приложений одновременно с небольшим падением производительности обработки (однако, производительность жесткого диска, сети и т. Д. Не так хорошо масштабируется). На практике даже это тоже может привести к уменьшению отдачи, поскольку неизбежны накладные расходы на управление распределением работы между ядрами, коммуникационными конвейерами и т. Д.
Например, в этом посте Tom's Hardware (с 2009 года) делается попытка взглянуть на производительность нескольких многоядерных процессоров в одновременных приложениях - запустить игру вместе со сканированием AVG (оба из которых, вероятно, являются многопоточными). Четырех-, трех- и двухъядерные процессоры работают одинаково только с игрой, но добавляют одновременное сканирование AVG, и производительность (измеренная по среднему FPS) падает на 22%, 40% и 59% соответственно.
Таким образом, хотя четырехъядерное ядро не обеспечивало повышения производительности по сравнению с двухъядерным при запуске одного интенсивного приложения, как только появилось другое интенсивное задание, в итоге производительность оказалась вдвое выше. К сожалению, я не могу найти ничего другого, чтобы исследовать, насколько хорошо это масштабируется с большим количеством ядер и более интенсивными задачами.
И затем вы должны принять к сведению современные функции процессоров, такие как Intel Turbo Boost / AMD Turbo Core. Эти особенности позволяют многоядерному процессору парковать ядра (переводить их в более медленный режим с низким энергопотреблением) и использовать запасную энергию для разгона ядер, которые остаются активными - что позволяет процессору оптимизировать себя для обеспечения как можно большей вычислительной мощности насколько это возможно для количества задач, с которыми он представлен.
источник
Чтобы добавить масла в огонь, я прочитал здесь, что Android на самом деле замедляется, имея более одного ядра:
источник
Конечно, это зависит от того, что вы делаете, но да, отдача уменьшается.
Простые повседневные приложения, такие как обработка текста или просмотр веб-страниц, мало выигрывают от наличия более двух процессорных ядер. Научные вычислительные и игровые приложения, как правило, лучше используют четыре (или более) ядра и / или возможности гиперпоточности, так как они, как правило, предназначены для максимально эффективного использования современного оборудования, но преимущество более четырех ядер ограничено.
Кроме того, не все связано с вычислениями. Добавление процессорных ядер не поможет, если ваша рабочая нагрузка связана с вводом / выводом. Если вы когда-либо устанавливали твердотельный накопитель для замены механического жесткого диска, вы, вероятно, будете знать, что производительность повседневных вычислений чаще всего ограничивается объемом памяти вашего компьютера. В загруженных серверных средах, где используется большое количество ядер, чтобы система могла обрабатывать большое количество пользователей и запросов одновременно, специализированные дисковые массивы, SSD и другие системы хранения используются для обеспечения максимальной производительности под нагрузкой.
источник