Вопрос, как указано, строго указан. Во-первых, он, похоже, путает производительность с частотой процессора. Даже при идентичных основных микроархитектурах задержки памяти не фиксируются в подсчетах циклов. Перемещение связанного списка на миллиард элементов - это (надуманная) рабочая нагрузка, зависящая от задержки памяти, когда два параллельных потока с половинной скоростью будут быстрее, чем временная привязка.
Если нижние частоты не являются результатом бининга продукта, энергосберегающей конфигурации и т.п., но из более мелкого конвейера (с той же шириной), то «более медленный» процессор будет иметь более низкое отклонение от неправильного прогноза и более низкая латентность в циклах до той же емкости кэша, что приводит к более высоким инструкциям в цикле для большинства рабочих нагрузок.
Даже с идентичными микроархитектурами два ядра также избегают перераспределения контекстного переключателя кэша. Стоимость коммутатора контекста - это не просто время, затрачиваемое на вызов ОС, запуск планировщика ОС (только с двумя активными потоками на двух ядрах, служебные данные планировщика ОС будут немного ниже, потому что нет других готовых потоков, но будет в два раза больше таймерных прерываний) и содержимое регистра свопа. (При запуске в пакетном режиме такие служебные данные переключателя контекста были бы исключены.)
Еще один фактор, который следует учитывать, заключается в том, сталкиваются ли две задачи с независимыми узкими местами. Например, если одна задача чрезвычайно интенсивно вычисляется, а другая связана с пропускной способностью основной памяти, то параллельная работа с ними может обеспечить лучшую производительность, чем временное масштабирование; с временным разрезом потенциал пропускной способности памяти не используется во время усредненных по времени вычислений.
Еще одним фактором является вмешательство в ограниченные ресурсы. Например, DRAM может страдать от банковских конфликтов, которые могут существенно снизить эффективную пропускную способность. Если адресация памяти и синхронизация событий приводят к максимальным конфликтам во время параллельной работы, тогда эффективная пропускная способность будет уменьшена. Аналогичный эффект может быть получен из ограниченной ассоциативности в общем кэше последнего уровня.
Более современные процессоры также имеют тенденцию к термическому ограничению, поэтому двухчастотный процессор может не поддерживать эту частоту при максимальном использовании, если эта частота не гарантируется в условиях вирусов питания, тогда как альтернативная двухядерная система вероятно, не столкнется с этим ограничением плотности мощности.
Спасибо за ответ. Могу ли я сказать, что один одноядерный процессор с удвоенной скоростью всегда лучше, чем двухъядерный процессор? – KhaledWas
Нет, Халед. Это действительно зависит от задач и ОС, задач ОС. Как правило, более или менее нормально утверждать, что для большинства задач 4 ядра 3GHz будут быстрее, чем 8 ядер 1,5 ГГц. Но с Windows одноядерный процессор всегда находится в невыгодном положении из-за многочисленных процессов ОС. –
Вы имеете в виду, что эти многочисленные запущенные процессы ОС потребуют дополнительных затрат времени для обмена данными между параллельными задачами? – KhaledWas