14

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

Однако на уровне ОС кажется очевидным, что ОС будет разделять процессы по различным ядрам. Разве это не было бы аргументом для получения большего количества ядер? Разве это не помогает во многих ситуациях? Вы выполняете несколько задач с интенсивным использованием процессора - каждый из этих процессов может загружать 100% своих ядер, но я все еще могу просматривать веб-страницы и задавать вопросы по SuperUser на моем последнем ядре… правильно?

4 ответа4

12

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

3

Чтобы добавить к ответу @ heavyyd, причина этого в том, что ОС не может определить, какие части процесса работают нормально, а какие - нет. Если программа не предназначена для работы на параллельных ядрах, в приложении могут быть подпрограммы, предназначенные для одновременной работы в последовательном режиме. Это может вызвать всевозможные проблемы (например, если 2 подпрограммы используют один и тот же блок памяти, но не предназначены для одновременной работы).

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

3

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

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

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

2

Ваши начальные чувства верны - есть отрицательный уклон к нескольким ядрам, и это не совсем то, что заслуживает.

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

Добавьте к этому тот факт, что некоторые пользователи могут также играть в игры на этом ПК или использовать такие инструменты, как garageband, imovie, handbrake, несколько ядер, может быть огромным преимуществом.

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

В принципе, вы правы, но какое количество ядер самое эффективное? 2? 4? 12? Скорее всего, это будет зависеть от привычек пользователей ... Я склонен к этому 2-4 для большинства пользователей, но я только догадываюсь.

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