Если бы у вас был выбор, Вы бы выбрали ноутбук с одним ядром 10 ГГц или 4 по 2.5? Даже предполагая, (а)TurboBoost, когда несколько задач выполняются одновременно. И (Б) быстрый переход в режим энергосбережения и простоя…
Нет, такого скорее вы не увидите на своем ноутбуке, учитывая, для чего вы его используете.
Это связано с (1) большим количеством задач, выполняемых на современных компьютерах, (2) коммутацией ресурсов операционной системы между ними и (3) технологией кэширования процессоров. (4) Есть еще и разрывы скорости.
Расскажу поподробнее
(1) Реальность использования и операционной системы:
Ваша ОС может заставить ваш компьютер чувствовать себя более отзывчивым и шустрым с несколькими ядрами. Лучше, чем он может только с одним более быстрым ядром.
Ваш компьютер, вероятно, выполняет более ста задач, большинство из которых вы не знаете. Многие из них просыпаются на микросекунду или миллисекунду, или каждую секунду. Или просто оживают для мониторинга других действий, когда те происходят.
Если какая-либо из них, или их совокупность, начинает занимать значительные ресурсы, то ваша ОС сможет лучше поддерживать приложение, которым вы пользуетесь в этот момент.
И если она сможет поддерживать выполнение вашего приложения на одном ядре. А так же и запускать все другие задачи на одном или нескольких других ядрах. ОС, которую вы используете, может на самом деле не делать этого по дизайну. Но просто имея несколько ядер, другие задачи скорее всего будут выполняться на других ядрах.
С точки зрения скорости, производителям компьютерных процессоров легче добавить больше ядер. Это проще, чем увеличить основные частоты на эквивалентное количество. Все из-за того, как работают полупроводниковые транзисторы.
Более высокие тактовые частоты генерируют гораздо более высокую «паразитную емкость», которая кровоточит из элементов схемы. Большинство процессоров, как и те, что в вашем смартфоне, выполняют одновременно много вещей. И поэтому они почти так же гибко могут использовать несколько ядер. Быстрее чем одно ядро, что и происходит.
Кроме того, многие современные процессоры постоянно бездействуют. И проще иметь несколько ядер для супер скоростей и несколько для медленных процессов. Что может привести к значительным сбережениям электроэнергии.
Более длиннее время работы от батарей и меньше тепловыделения будут меньше бить по вашему карману.
(2) Теория Queing:
Предположения в теории очередей утверждает, что не всегда лучше иметь более быстрый процессор, а лучше много более медленных. Особенно в реальном мире.
Теория очередей может продемонстрировать, что одно более быстрое ядро обеспечивает лучшее среднее время отклика и общую пропускную способность.
Особенно когда есть (А) много параллельных источников спроса. И (Б) спрос на ресурсы составляет менее 100%. Однако эти условия неприменимы, если (1) потребность в ресурсах превышает 100%.
Или (2) переключение между выполняемыми задачами (срез времени) выполняется операционной системой с определенной стоимостью для выбора, и переключения на другую задачу.
(3) Эффекты кэширования
Допустим у каждого ядра есть свой собственный кэш памяти. И так же есть очень много задач, которые нужно обслуживать. Тогда наличие нескольких ядер может улучшить скорость отклика и процент тактов, которые действительно выполняются с пользой.
Каждое ядро имеет некоторую частную сверхбыструю память (кэш). Ту, которая дублирует то, что находится в другом месте. Он содержит последний используемый код и данные. То, что не может быть доступно из кэша, приводит к остановке ядра на несколько сотен тактов. В течение которых оно не делает ничего полезного для любой задачи.
Всякий раз, когда ядро переключается с одной задачи на другую. Или переключается на код ядра операционной системы. Тогда текущий код и данные заменяют некоторые или все данные, что были в кэше. Это производит много время простоя, уменьшая производительность.
Позже, даже если ОС переназначит предыдущую задачу тому же ядру, будет потрачено много времени. Это время уйдет на повторное заполнение кэша для возобновленной задачи.
Это кэширование может уменьшить количество полезных инструкций в секунду. До менее 1% от того, что может быть.
Распределение задач по многим ядрам, каждый со своим собственным кэшем, ограничивает размер каждого из них. Но что более важно, это может помешать каждой задаче очистить весь кэш в ущерб другим задачам.
(4) Разрыв скорости между системами ПК
Разрыв в скорости между основной памятью и процессором в современном компьютере составляет несколько сотен циклов ЦП. Поэтому бывает, что поток не может подать данные из памяти достаточно быстро. Тогда конвейер выполнения останавливается до получения данных.
Многоуровневый кэш используется в современных процессорах. Но скорость попадания в кэш в 90% случаях по-прежнему означает следующее. Что в среднем, десятки циклов процессора застопорятся для доступа к памяти, для выполнения инструкций.
Может ли контекст ОС переключиться на процесс? Переключение контекста будет потреблять сотни циклов процессора, поэтому это не очень полезно.
Введите параллелизм на уровне потока на уровне ядра. С помощью TLP ядро может переключаться на другой запускаемый поток в одном цикле ЦП. И выполнять полезную работу при остановке чтения памяти в другом потоке.
Общая пропускная способность улучшается, поскольку остановка памяти скрыта переключателем контекста потока для подачи конвейера выполнения. Было открыто, что уровень ТЛП от 2 до 8 эффективен. Это улучшает общую пропускную способность, но не задержку. Поэтому, если вы заботитесь только о задержке одного потока, это не полезно.
Но помните, что даже вы запускаете только одно приложение, которое является однопоточным, ОС должна время от времени запускаться для уборки.
Поэтому она может извлечь выгоду из более чем одного ядра. Не говоря уже вы можете запускать несколько приложений в фоновом режиме. На этом все. Спасибо за внимание.