Вопрос по multithreading, performance – Что является более эффективным? Больше ядер или больше процессоров

8

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

Что лучше и почему? Будь то эффективность, скорость, производительность, удобство использования и т. Д.

1.) Компьютер / сервер с 4 четырехъядерными процессорами?

или же

2.) Компьютер / сервер с 16 одноядерными процессорами?

Пожалуйста, примите во внимание, что все остальные факторы (скорость, кэш, скорость шины, пропускная способность и т. Д.) Равны.

Edit:

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

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

И если мне придется выбирать, меня больше всего заинтересует, что лучше в отношении приложений, связанных с вводом / выводом, и приложений, связанных с вычислениями. Sev
Лучше для чего? I / O-связанные приложения? Приложения для вычислений? Сервер базы данных? Веб сервер? Видео трансляция? S.Lott
@ Бен: мой вопрос носит более общий характер. В связи с этим, вы говорите мне: работает ли несколько независимых приложений лучше на многоядерных процессорах, чем на многоядерных? или наоборот? Как насчет многих тем? Sev
С какой целью ? Планируете ли вы запустить несколько независимых приложений или одно с несколькими потоками? Ben
Производительность в основном. Но я бы предпочел более всеобъемлющий ответ, так как если он особенно хорош в одном и ужасен в другом, то я бы тоже хотел это знать. Sev

Ваш Ответ

4   ответа
12

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

Процессоров несколько (2-3 обычно)уровни кеширования на процессоре, Некоторые современные процессоры также имеют контроллер памяти на кристалле. Это может значительно повысить скорость обмена памятью между ядрами. Ввод / вывод памяти между процессорами должен идти по внешней шине, которая обычно медленнее.

Использование чипов AMD / ATIHyperTransport, который является протоколом точка-точка.

Однако все это усложняет архитектуру шины. Система Intel Core 2 Duo / Quad используетобщий автобус, Подумайте об этом, как о Ethernet или кабельном интернете, где пропускная способность ограничена, и каждый новый участник просто получает еще одну долю от целого. Core i7 и более новые Xeons используютQuickPath, который очень похож на HyperTransport.

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

Вообще говоря, один процессор будет самым дешевым (как с точки зрения аппаратного, так и программного обеспечения). Для этого можно использовать товарное оборудование. Когда вы переходите ко второму сокету, вам, как правило, приходится использовать разные наборы микросхем, более дорогие материнские платы и зачастую более дорогую ОЗУ (например, ОЗУ с полной буферизацией ECC), поэтому вы получаете огромные потери при переходе с одного ЦП на два. Это одна из причин, по которой так много крупных сайтов (включая Flickr, Google и другие) используютthousands обычных серверов (хотя серверы Google несколько настроены на использование таких элементов, как батарея 9 В, но принцип тот же).

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

Приложения, связанные с вводом / выводом, вероятно, не предпочтут одно другому. В конце концов, они связаны I / O, а не CPU.

Для приложений, основанных на вычислениях, это зависит от характера вычислений. Если вы выполняете много операций с плавающей запятой, вы можете получить гораздо больше пользы, используя графический процессор для выгрузки вычислений (например, используяNvidia CUDA). Вы можете получитьhuge выигрыш в производительности от этого. Посмотрите наGPU-клиент для Folding @ Home для примера этого.

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Sev
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
3

что все другие факторы не могут быть в действительности одинаковыми.

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

1

НО четырехъядерный ЦП в значительной степени такой же (или лучше), что и 4 физически разделенных ЦП, из-за уменьшенной связи (т. Е. Не нужно выходить из строя и не перемещаться очень далеко, что является фактором), а также общих ресурсов.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Sev
2

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

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

Помните эти большие неуклюжие P2 & amp; Процессоры P3 от Intel и ранних Athlon & amp; дуроны от AMD, которые были установлены сбоку и содержались в большой пластиковой упаковке? Причина этого состояла в том, чтобы иметь возможность устанавливать микросхему кэш-памяти рядом с микросхемой процессора, поскольку процессы производства того времени делали невозможным размещение кеш-памяти на самой матрице процессора. Voil & # xE0; нестандартное решение на процессоре. Из-за временных ограничений эти чипы кэш-памяти будут работать на частоте (около 50%) тактовой частоты ЦП. Как только производственные процессы начались, кэши были переведены в режим реального времени и начали работать на внутренней тактовой частоте.

Несколько лет назад AMD перевела контроллер оперативной памяти с северного моста (не подключенный) к процессору (встроенный). Зачем? Потому что это делает операции с памятью более эффективными (более быстрыми), устраняя наполовину проводку внешней адресации и исключая прохождение через северный мост (CPU-wiring-Northbridge-wiring-RAM стала CPU-wiring-RAM). Изменение также позволило иметь несколько независимых контроллеров памяти с их собственными наборами ОЗУ, работающими одновременно на одном кристалле, что увеличивает пропускную способность памяти процессора.

Чтобы вернуться к разъяснению, мы видим долгосрочную тенденцию к переносу критичных к производительности функций с материнской платы на кристалл процессора. В дополнение к упомянутым выше мы наблюдали интеграцию нескольких ядер в один и тот же кристалл, кэши L1 вне кристалла L1 / кристалл L1 превратились в кэши вне L3 / кристалл L1 и L2, которые теперь находятся в кристалле L1, Кэши L2 и L3. Кэши становятся все больше и больше по мере того, как они занимают больше места, чем сами ядра.

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

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