Меню

На что влияет производительность процессора – Кто виноват в медлительности игр на ПК — процессоры или видеокарты? Определяем «крайнего» на примере современных игр

Содержание

НОУ ИНТУИТ | Лекция | Архитектура микропроцессора Intel и основные факторы, влияющие на его производительность

Аннотация: На лекции рассматривается упрощенная модель процессора, составляющие его компоненты. Рассматривается многоуровневая модель памяти, использование регистров и оперативной памяти, механизм упреждающей выборки, предсказание переходов. Конвейер. Векторные инструкции. Многоядерность и параллельное выполнение инструкций. Место и роль компилятора в процессе создания эффективного приложения.

Презентацию к лекции Вы можете скачать здесь.

Упрощенная модель процессора


Дополнительная информация:

Прототипом схемы служит отчасти описание архитектуры фон Неймана, которая имеет следующие принципы:

  1. Принцип двоичности
  2. Принцип программного управления
  3. Принцип однородности памяти
  4. Принцип адресуемости памяти
  5. Принцип последовательного программного управления
  6. Принцип условного перехода

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

Упрощенная модель процессора

  • устройство управления (Control Unit, CU)
  • арифметико-логическое устройство (Arithmetic and Logic Unit, ALU)
  • системные регистры
  • системная шина (Front Side Bus, FSB)
  • память
  • периферийные устройства

Устройство управления (CU):

  • выполняет дешифрацию инструкций, поступающих из памяти компьютера.
  • управляет ALU.
  • осуществляет пересылку данных между регистрами ЦП, памятью, периферийными устройствами.

Арифметико-логическое устройство:

  • позволяет производить арифметические и логические операции над системными регистрами.

Системные регистры:

  • определенный участок памяти внутри ЦП, используемый для промежуточного хранения информации, обрабатываемой процессором.

Системная шина:

  • используется для пересылки данных между ЦП и памятью, а также между ЦП и периферийными устройствами.

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

Высокая производительность МП (микропроцессора)– один из ключевых факторов в конкурентной борьбе производителей процессоров.

Производительность процессора напрямую связана с количеством работы, вычислений, которые он может выполнить за единицу времени.

Очень условно:

Производительность = Кол-во инструкций / Время

Мы будем рассматривать производительность процессоров на базе архитектур IA32 и IA32e. (IA32 with EM64T).

Факторы влияющие на производительность процессора:

  • Тактовая частота процессора.
  • Объем адресуемой памяти и скорость доступа к внешней памяти.
  • Скорость выполнения и набор инструкций.
  • Использование внутренней памяти, регистров.
  • Качество конвейеризации.
  • Качество предсказания переходов.
  • Качество упреждающей выборки.
  • Суперскалярность.
  • Наличие векторных инструкций.
  • Многоядерность.

Что такое производительность? Сложно дать однозначное определение производительности. Можно формально привязать его к процессору – сколько, инструкций за единицу времени может выполнять тот или иной процессор. Но проще дать сравнительное определение – взять два процессора и тот, который выполняет некий набор инструкций быстрее, тот более производительный. То есть, очень условно, можно сказать, что производительность – это количество инструкций на время выполнения. Мы здесь в основном будем исследовать те микропроцессорные архитектуры, которые выпускает Intel, то есть архитектуры IA32, которые сейчас называются Intel 64. Это архитектуры, которые с одной стороны поддерживает старые инструкции из набора IA32, с другой стороны имеют EM64T – это некое расширение, которое позволяет использовать 64 битные адреса, т.е. адресовать большие размеры памяти , а также включает в себя какие-то полезные дополнения, типа увеличенного количества системных регистров, увеличенное количество векторных регистров.

Какие факторы влияют на производительность? Перечислим все, которые приходят в голову. Это:

  • Скорость выполнения инструкций, полнота базового набора инструкций.
  • Использование внутренней памяти регистров.
  • Качество конвейеризации.
  • Качество предсказания переходов.
  • Качество упреждающей выборки.
  • Суперскалярность.
  • Векторизация, использование векторных инструкций.
  • Параллелизация и многоядерность.

Тактовая частота

Процессор состоит из компонент, срабатывающих в разное время и в нем существует таймер, который обеспечивает синхронизацию, посылая периодические импульсы. Его частота и называется тактовой частотой процессора.

Объем адресуемой памяти

8086 – 1МБ.
80286 – 16МБ (новые системные регистры и новый режим работы с памятью).
80386 – 4ГБ (первый 32-битный процессор технология EM64T – ~264 ГБ)

Тактовая частота.

Поскольку процессор имеет много различных электронных компонент, которые работают независимо, то для того, чтобы синхронизировать их работу, чтобы они знали, в какой момент надо начать работать, когда нужно выполнить свою работу и ждать, существует таймер, который посылает синхроимпульс. Частота, с которой посылается синхроимпульс – и есть тактовая частота процессора. Есть устройства, которые успевают две операции выполнить за это время, тем не менее, к этому синхроимпульсу работа процессора привязана, и, можно сказать, что если мы эту частоту увеличим, то мы заставим все эти микросхемы работать с большим напряжением сил и меньше простаивать.

Объем адресуемой памяти и скорость доступа к памяти.

Объем памяти — необходимо, чтобы памяти хватало для нашей программы и наших данных. То есть, технология EM64T позволяет адресовать огромное количество памяти и на данный момент вопрос с тем, что нам не хватает адресуемой памяти не стоит.

Поскольку на эти факторы разработчики в общем случае не имеют возможности влиять, то я только упоминаю о них.

Скорость выполнения и набор инструкций

Производительность зависит от того, насколько качественно реализованы инструкции, насколько полно базовый набор инструкций покрывает все возможные задачи.

CISC,RISC (complex, reduced instruction set computing)

Современные процессоры Intel® представляют собой гибрид CISC и RISC процессоров, перед исполнением преобразуют CISC инструкции в более простой набор RISC инструкций.

Скорость выполнения инструкций и полнота базового набора инструкций.

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

Использование регистров и оперативной памяти

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

Вытеснение регистров (register spilling) – из-за недостаточного кол-ва регистров велик обмен между регистрами и стеком приложения.

Ia32
Технология EM64T – добавлены дополнительные системные регистры

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

Существуют две характеристики для описания свойств памяти:

  • Время отклика (latency) – число циклов процессора необходимых для передачи единицы данных из памяти.
  • Пропускная способность (bandwidth) – количество элементов данных которые могут быть отправлены процессору из памяти за один цикл.

Две возможные стратегии для ускорения быстродействия– уменьшение времени отклика или упреждающий запрос нужной памяти.

Использование регистров и оперативной памяти.

Регистры – самые быстрые элементы памяти, они находятся непосредственно на ядре, и доступ к ним практически мгновенный. Если ваша программа делает какие-то вычисления, хотелось бы, чтобы все промежуточные данные хранились на регистрах. Понятно, что это невозможно. Одна из возможных проблем производительности– это проблема вытеснения регистров. Когда вы под каким-нибудь анализатором производительности смотрите на ассемблерный код, вы видите, что у вас очень много движения со стека в регистры и обратно выгрузка регистров на стек. Стоит вопрос – как оптимизировать код так, чтобы самые горячие адреса, самые горячие промежуточные данные, лежали именно на системных регистрах.

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

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

Кэширование

Кэш-память служит для уменьшения времени доступа к данным.

Для этого блоки оперативной памяти отображаются в более быструю кэш-память.

Если адрес памяти находится в кэше – происходит «попадание» и скорость получения данных значительно увеличивается.

В противном случае – «промах» (cache miss)

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

Можно выделить следующие виды кэш-памяти:

  • полностью ассоциативная кэш-память (каждый блок может отображаться в любое место кэша)
  • память с прямым отображением (каждый блок может отображаться в одно место)
  • гибридные варианты (секторная память, память с множественно-ассоциативным доступом)

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

Качество использования кэша – ключевое условие быстродействия.

Дополнительная информация: в современных IA32 системах размер кэш-линии 64 байта.

Уменьшение времени доступа было достигнуто введением кэш-памяти. Кэш-память – это буферная память, находящаяся между оперативной памятью и микропроцессором. Она реализована на ядре, то есть доступ к ней гораздо быстрее чем к обычной памяти, но она намного дороже, поэтому при разработке микроархитектуры нужно найти точный баланс между ценой и производительностью. Если вы посмотрите на описания предлагаемых в продаже процессоров, вы увидите, что всегда в описании пишется, сколько кэша памяти того или иного уровня на данном процессоре есть. Эта цифра серьезно влияет на цену данного изделия. Кэш-память устроена так, что обычная память отображается на кэш-память, отображение идет блоками. Вы, запрашивая в оперативной памяти какой-то адрес, делаете проверку, отображен ли этот адрес в кэш-памяти. Если этот адрес уже есть в кэш-памяти, то вы экономите время на обращение к памяти. Вы считываете эту информацию из быстрой памяти, и у вас время отклика существенно уменьшается, если же этого адреса в кэш-памяти нет, то мы должны обратиться к обычной памяти, чтобы этот необходимый нам адрес вместе с каким-то блоком, в котором он находится, отобразился в эту кэш-память.

Существуют разные реализации кэш-памяти. Бывает полностью ассоциативная кэш-память, когда каждый блок может отображаться в любое место кэша. Существует память с прямым отображением, когда каждый блок может отображаться в одно место, также существуют различные гибридные варианты – например кэш с множественно-ассоциативным доступом. В чем разница? Разница во времени и сложности проверки на наличие нужного адреса в кэш-памяти. Предположим, что нам нужен определенный адрес. В случае с ассоциативной памятью нам нужно проверить весь кэш – убедиться, что этого адреса в кэше нет. В случае с прямым отображением нам нужно проверить только одну ячейку. В случае с гибридными вариантами, например, когда используется кэш с множественно-ассоциативным доступом, нам нужно проверить, к примеру, четыре или восемь ячеек. То есть, задача определить есть ли адрес кэша – тоже важна. Качество использования кэша – важное условие быстродействия. Если нам удастся написать программу так, чтобы как можно чаще те данные, с которыми мы собирались работать, находились в кэше, то такая программа будет работать гораздо быстрее.

Характерные времена отклика при обращении к кэш памяти для Nehalem i7:

  • L1 — latency 4
  • L2 — latency 11
  • L3 — latency 38

Время отклика для оперативной памяти > 100

Упреждающий механизм доступа к памяти реализован при помощи механизма упреждающей выборки (hardware prefetching).

Есть специальный набор инструкций, позволяющий побудить процессор загрузить в кэш память расположенную по определенному адресу (software prefetching).

Для примера возьмем наш последний процессор Nehalem: i7.

Здесь мы имеем не просто кэш, а некий иерархический кэш. Долгое время он был двухуровневый, в современной системе Nehalem он трехуровневый – совсем немного очень быстрого кэша, чуть побольше кэша второго уровня и достаточно большое количество кэша третьего уровня. При этом, эта система построена так, что если какой-то адрес находится в кэше первого уровня, он автоматически находится во втором и в третьем уровнях. Это и есть иерархическая система. Для кэша первого уровня задержка – 4 такта, для второго – 11, третьего – 38 и время отклика оперативной памяти – больше 100 тактов процессора.

Принцип локальности. Качество упреждающей выборки.

Локальность ссылки (locality of reference) – повторное использование переменных или взаимосвязанных данных. Различают временную локальность (temporal locality) – когда речь идет об одних и тех же данных и пространственную локальность (spatial locality) – использование различных данных, имеющих относительно близкие области хранения.

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

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

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

Второй вариант улучшения быстродействия и работы с памятью, про который мы упомянули – это подкладывать в кэш заранее необходимые адреса – упреждающий механизм доступа к памяти (Hardware Prefetching). Этот механизм выявляет закономерности, с которыми вы обращаетесь к памяти, и заранее закачивает в кэш адреса, которые могут вам понадобиться. Если вы обрабатываете несколько массивов, движетесь по ним последовательно или с каким-то постоянным шагом, то, скорее всего, этот механизм начнет эти адреса заранее подгружать. Есть специальный набор инструкций, позволяющий загрузить в кэш память, расположенную по определенному адресу. (Software Prefetching)

Кэш имеет внутренние алгоритмы работы. Введем несколько понятий.

Локальность ссылки – переиспользование переменных или взаимосвязанных данных. Различают временную локальность – переиспользование определенных данных и ресурсов и пространственную локальность — использование данных, имеющих относительно близкие области хранения.

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

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

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

Конвейер


Обычно подобную картинку приводят, чтобы иллюстрировать работу конвейера.

Качество конвейеризации, уровень параллелизма инструкций

Конвейеризация предполагает, что последовательные инструкции будут перекрываться при выполнении.

Выполнение типичной команды можно разделить на следующие этапы:

  • выборка команды – IF;
  • декодирование команды / выборка операндов из регистров — ID;
  • выполнение операции / вычисление эффективного адреса памяти — EX;
  • обращение к памяти — MEM;
  • запоминание результата — WB.

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

Качество конвейеризации.

Было время, когда процессор выполнял одновременно одну инструкцию. После введения конвейеризации процесс обработки инструкции разбит на несколько этапов. Один из вариантов, который широко используется, приведен:

выборка команды;
декодирования команды;
выполнение операции;
обращение к памяти;
запоминание результатов.

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

Зависимость производительности в играх от частоты процессора на высоком разрешении.

Этот материал написан посетителем сайта, и за него начислено вознаграждение.

Введение.

Зачастую при выборе видеокарты можно услышать: «Не стоит эту карточку брать, твой процессор не раскроет её потенциал полностью». Далеко не всегда это утверждение верно, особенно для высоких разрешений и максимальных настроек графики. В данной статье я хочу провести исследование на тему, так какая же частота процессора (или какой процессор) нужна для современной видеокарты при использовании высоких разрешений.

Методика тестирования.

Для тестирования использовалась программа Fraps, точнее встроенный в неё бенчмарк, он каждую секунду измеряет FPS , так же измеряет максимальный, средний, и минимальный на отрезке времени. Для каждой игры отрезок времени для теста был выбран в 60сек.
Строилось 2 графика:
1)График максимального, сренего и минимального FPS.
2)График зависимости FPS от времени
Примечание: Максимальный или минимальный FPS на первом и втором графике могут не совпадать, т.к. Для построения второго FPS измерялся 1 раз в секунду. А для первого Максимальное и минимальное значение на всём протяжении теста.
Тесты проводились на частоте процессора: 1200Мгц, 2400Мгц и 3600Мгц.
Все игры тестировались на разрешении 1920*1200.

Описание конфигурации тестового стенда.

Проц Core 2 Duo E6400
Кулер Ice Hammer IH-4405
Мать ASUS P5K/EPU
Видео Palit GeForce 9800GTX+ 512Mb 745\1836\2200Мгц
Память Corsair XMS2 CM2X2048-6400C5 x 2
HDD SAMSUNG SP2504C
2й SAMSUNG HD502IJ
3й Western Digital WD5000AACS
Звуковая Audigy 2
БП Hiper HPU-4M630
Моник Samsung 2443NW

Использовались 2 операционные системы Windows Vista Ultimate х64 SP1 и Windows XP Professional Edition х86 SP2. Для каких игр какая, будет сказано позже.

CPU-Z


Данные результаты для показа режима работы процессора при тестировании.


Результаты тестирования.

Colin McRae DIRT



Для этой игры использовалась Vista, настройки графики максимальные (в том числе и сглаживание).
Как видно из графиков, частоты в 1200Мгц недостаточно для данной игры, есть просадки минимального FPS . Переход с 2400Мгц на 3600Мгц существенного прироста производительности не дал.

Flatout Ultimate Carnage



Игра тестировалась под ХР. Настройки графики выставлены на максимум, кроме ANTIALAISING, он установлен на х2 .
И снова наблюдаем низкий минимальный FPS при 1200Мгц . В начале теста разница между 2400Мгц и 3600Мгц не велика, а вот под конец, 3600Мгц дают существенный прирост FPS . Для этой игры всё же желателен процессор с высокой производительностью.

Need for speed Pro Street



Игра тестировалась под ХР. Настройки графики выставлены на максимум.
1200Мгц недостаточно для раскрытия потенциала видеокарты в данной игре . А вот 2400Мгц вполне достаточно, при переходе на 3600Мгц роста FPS не наблюдается.

Oblivion



Для игры использовалась ОС Vista . Настройки графики на максимум.
1200Мгц явно не достаточно для этой игры. А между 2400Мгц и 3600Мгц существенной разницы мы не видим. Но в 2х последних режимах наблюдалось странное явление, под конец теста очень сильные просадки FPS, объяснение которым я найти не смог.

Sacred 2



Игра была запущенна под Vista. Настройки графики выставлены на максимум.
И снова недостаточно для нормальной игры 1200Мгц. На 2400Мгц, уже есть небольшое ощущение комфорта. Существенного прироста переход на 3600Мгц не дал.
Объяснение провалу в центре теста на 3600Мгц найти не смог. Специально попытался ещё раз прогнать тест, результат такой же.

S.T.A.L.K.E.R.: Shadow of Chernobyl



Игра тестировалась под XP, выставлены были настройки на максимум.
1200Мгц очень мало для этой игры, наблюдаем низкий FPS . На 2400Мгц наблюдаются небольшие просадки но вполне достаточно для «раскрытия карты». Переход на 3600Мгц немного увеличил средний FPS и сгладил просадки.

S.T.A.L.K.E.R.: Clear Sky



Игра тестировалась под Vista, выставлено было полное динамическое освещение, без DX10 эффектов, остальные настройки на максимум.
Судя из графиков, игра демонстрирует сильную зависимость от частоты процессора, практически линейный рост FPS с ростом частоты.

3DMark


Все тесты проводились на стандартных настройках, со стандартным разрешением.

Из результатов видно, что все 3 теста демонстрируют сильную процессорозависимость.
Особо хочется выделить 3DMark 03 , который не смотря на свой возраст остаётся весьма актуальным, чего не скажешь про 05.

Вывод.

Как показало это тестирования для раскрытия потенциала 9800GTX+ вполне достаточно и частоты 2400Мгц, но есть игры, где наблюдается и рост при переходе на 3600Мгц.

P.S. Обсуждаем тут

Подпишитесь на наш канал в Яндекс.Дзен или telegram-канал @overclockers_news — это удобные способы следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.

Влияние параметров памяти на производительность системы

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

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

Зависимость общей производительности системы от памяти имеет сложный характер, что затрудняет прямую оценку скорости памяти, то есть сравнения различных модулей. Например, память с частотой 1600 МГц имеет вдвое большую пропускную способность, чем 800-мегагерцовая. И синтетические тесты памяти прилежно выведут столбик в два раза выше. Но если вы протестируете целую систему с этими двумя видами памяти с помощью популярных тестовых приложений, на которых обычно тестируют процессоры, то и близко не получите двухкратной разницы в производительности. Интегральный индекс быстродействия может отличаться максимум на несколько десятков процентов.

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

Краткая теория

Чтобы понять специфику проблемы, рассмотрим принципиальную схему взаимодействия приложения, ЦП и подсистемы памяти. Уже давно для описания работы центрального процесса считается удачной аналогия с заводским конвейером. И движутся по этому конвейеру инструкции из программного кода, а функциональные модули процессора обрабатывают их словно станки. Тогда современные многоядерные ЦП будут подобны заводам с несколькими цехами. Например, работу технологии Hyper-Threading можно сравнить с конвейером, по которому едут вперемешку детали сразу нескольких автомобилей, и умные станки обрабатывают их одновременно, по метке на деталях определяя, к какой модели машины они относятся. Например, собирается красная и синяя машины, тогда красящий станок использует красную краску для деталей красной машины и синюю краску для синей. И поток деталей сразу для двух моделей позволяет лучше загрузить станки. А если аппарат для покраски будет иметь два распылителя, и сможет красить одновременно две детали в разные цвета, конвейер сможет работать на полную мощность вне зависимости от того, в каком порядке будут поступать детали. Наконец, последний писк моды, реализуемый в будущих процессорах AMD, в которых различные ядра ЦП будут иметь некоторые общие функциональные блоки, можно сравнить с идеей сделать часть особо громоздких и дорогих станков общей для двух цехов, чтобы сэкономить заводскую площадь и сократить капитальные затраты.

С точки зрения данной аналогии, системная память будет являться внешним миром, который поставляет на завод сырье и принимает готовый продукт, а кэш-память — это некий склад непосредственно на заводской территории. Чем больше у нас системной памяти, тем больший виртуальный мир мы можем обеспечивать выпускаемой продукцией, и чем больше частота ЦП и количество ядер, тем мощнее и производительнее наш завод. А чем больше размер кэш-памяти, то есть заводского склада, тем меньше будет обращений в системную память — запросов на поставку сырья и комплектующих.

Производительность памяти в этой аналогии будет соответствовать скорости транспортной системы по доставке сырья и отправке деталей во внешний мир. Допустим, доставка на завод осуществляется при помощи грузовиков. Тогда параметрами транспортной системы будут вместимость грузовика и скорость движения, то есть время доставки. Это хорошая аналогия, так как работа ЦП с памятью осуществляется с помощью отдельных транзакций с блоками памяти фиксированного размера, причем данные блоки расположены рядом, в одном участке памяти, а не произвольно. И для общей производительности завода важна не только скорость работы конвейера, но и оперативность подвоза компонентов и вывоза готовых изделий.

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

Другие же программы имеют так называемый локальный доступ к памяти, то есть они читают или пишут в близко расположенные ячейки памяти — им относительно безразлична скорость случайного доступа. Это свойство программ объясняет эффект от наращивания объемов кэш-памяти в процессорах, которая, благодаря близкому расположению к ядру, в десятки раз быстрее. Даже если программа требует, например, 512 МБ общей памяти, в каждый отдельный небольшой промежуток времени (например, миллион тактов, то есть одна миллисекунда), программа может работать только с несколькими мегабайтами данных, которые успешно помещаются в кэше. И потребуется только обновлять время от времени содержимое кэша, что, в общем, происходит быстро. Но может быть и обратная ситуация: программа занимает всего 50 МБ памяти, но постоянно работает со всем этим объемом. А 50 МБ значительно превышают типичный размер кэша существующих настольных процессоров, и, условно говоря, 90% обращений к памяти (при размере кэша в 5 МБ) не кэшируются, то есть 9 из 10 обращений идут непосредственно в память, так как необходимых данных нет в кэше. И общая производительность будет почти полностью лимитирована скоростью памяти, так как процессор практически всегда будет находиться в ожидании данных.

Время доступа к памяти в случае, когда данных нет в кэше, составляет сотни тактов. И одна инструкция обращения к памяти по времени равноценна десяткам арифметических.

«Памятенезависимые» приложения

Позволим себе один раз использовать такой корявый термин для приложений, производительность в которых на практике не зависит от смены модулей на более высокочастотные и низколатентные. Откуда вообще такие приложения берутся? Как мы уже отметили, все программы имеют различные требования к памяти, в зависимости от используемого объема и характера доступа. Каким-то программам важна только общая ПСП, другие, наоборот, критичны к скорости доступа к случайным участкам памяти, которая иначе называется латентностью памяти. Но очень важно также, что степень зависимости программы от параметров памяти во многом определяется характеристиками центрального процессора — прежде всего, размером его кэша, так как при увеличении объема кэш-памяти рабочая область программы (наиболее часто используемые данные) может поместиться целиком в кэш процессора, что качественно ускорит программу и сделает её малочувствительной к характеристикам памяти.

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

Активно развиваются технологии спекулятивной предвыборки, когда процессор, даже ещё не имея точного значения адреса памяти, уже посылает запрос на чтение. Например, процессор для номера некоторой инструкции обращения к памяти запоминает последний адрес ячейки памяти, которая читалась. И когда ЦП видит, что скоро потребуется исполнить данную инструкцию, он посылает запрос на чтение данных по последнему запомненному адресу. Если повезет, то адрес чтения памяти не изменится, или изменится в пределах читаемого за одно обращение к памяти блока. Тогда латентность доступа к памяти отчасти скрадывается, поскольку параллельно с доставкой данных процессор исполняет инструкции, предшествующие чтению из памяти. Но, разумеется, такой подход не является универсальным и эффективность предвыборки сильно зависит от особенностей алгоритма программы.

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

Еще одна причина, по которой пользователь может не обнаружить разницы при смене памяти, состоит в том, что она и так слишком быстрая для используемого процессора. Если бы сейчас все процессоры вдруг замедлились в 10 раз, то для производительности системы в большинстве программ стало бы абсолютно все равно, какой тип памяти в ней установлен — хоть DDR-400, хоть DDR3-1600. А если бы ЦП радикально ускорились, то производительность значительной части программ наоборот стала бы гораздо существеннее зависеть от характеристик памяти.

Таким образом, реальная производительность памяти есть величина относительная, и определяется в том числе и используемым процессором, а также особенностями ПО.

«Памятезависимые» приложения

А в каких пользовательских задачах производительность памяти имеет большее значение? По странной, но на самом деле имеющей глубокие основания причине — в случаях, которые сложно тестировать.

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

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

Достаточно сильно от производительности памяти могут зависеть и игры других жанров, пусть не со столь умным искусственным интеллектом, зато с собственными алгоритмами имитации виртуального мира, включая физическую модель. Впрочем, они на практике чаще всего упираются в производительность видеокарты, поэтому тестировать на них память также бывает не очень удобно. Кроме того, важным параметром комфортного игрового процесса в трехмерных играх от «первого лица» является минимальное значение fps: его возможное проседание в пылу жестокой битвы может иметь самые плачевные для виртуального героя последствия. А минимальный fps тоже, можно сказать, невозможно измерить. Опять же — из-за вариативного поведения ИИ, особенностей расчета «физики» и случайных системных событий, которые тоже могут приводить к проседанию. Как прикажете в таком случае анализировать полученные данные?

Тестирование скорости игр в демо-роликах имеет ограниченное применение еще и потому, что не все части игрового движка бывают задействованы для воспроизведения демки, и в реальной игре на скорость могут влиять иные факторы. Причем даже в таких наполовину искусственных условиях минимальный fps непостоянен, и его редко приводят в отчетах о тестировании. Хотя, повторимся, это наиболее важный параметр, и в тех случаях, когда идет обращение к данным, проседание fps весьма вероятно. Ведь современные игры, в силу своей сложности, разнообразия кода, включающего помимо поддержки физического движка и искусственного интеллекта также подготовку графической модели, обработку звука, передачу данных через сеть и пр., очень зависят как от объема, так и от производительности памяти. Кстати, будет заблуждением считать, что графический процессор обрабатывает сам всю графику: он только рисует треугольники, текстуры и тени, а формированием команд все равно занимается ЦП, и для сложной сцены это вычислительно емкая задача. К примеру, когда вышел Athlon 64 с интегрированным контроллером памяти, наибольший прирост в скорости по сравнению со старым Athlon был именно в играх, хотя там не использовались 64-битность, SSE2 и другие новые «фишки» Athlon 64. Именно существенное повышение эффективности работы с памятью благодаря интегрированному контроллеру сделало тогдашний новый процессор AMD чемпионом и лидером по производительности в первую очередь в играх.

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

Ещё одним принципиальным случаем усиленной зависимости от памяти является режим многозадачности, то есть запуск нескольких ресурсоемких приложений одновременно. Вспомним снова все тот же AMD Athlon 64 с интегрированным контроллером памяти, который к моменту анонса Intel Core выпускался уже в двухъядерном варианте. Когда вышел Intel Core на новом ядре, процессоры AMD стали проигрывать везде, кроме SPEC rate — многопоточном варианте SPEC CPU, когда запускается столько копий тестовой задачи, сколько ядер в системе. Новое интеловское ядро, обладая большей вычислительной мощностью, тупо затыкалось в этом тесте в производительность памяти, и даже большой кэш и широкая шина памяти не помогали.

Но почему это не проявлялось в отдельных пользовательских задачах, в том числе многопоточных? Главной причиной было то, что большинство пользовательских приложений, которые в принципе хорошо поддерживают многоядерность, всячески оптимизированы. Вспомним в очередной раз пакеты для работы с видео и графикой, которые больше всех получают прирост от многопоточности — всё это оптимизированные приложения. К тому же объем используемой памяти меньше, когда код параллелится внутри программы — по сравнению с вариантом, когда запускаются несколько копий одной задачи, а тем более — разные приложения.

А вот если запустить на ПК сразу несколько различных приложений, нагрузка на память возрастет многократно. Это произойдет по двум причинам: во-первых, кэш-память будет поделена между несколькими задачами, то есть каждой достанется только часть. В современных ЦП кэш L2 или L3 — общий для всех ядер, и если одна программа использует много потоков, то они все могут выполняться на своем ядре и работать с общим массивом данных в L3-кэше, а если программа однопоточна, то ей достается весь объем L3 целиком. Но если потоки принадлежат различным задачам, объем кэша будет вынужденно делиться между ними.

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

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

Типичным примером такой ситуации на ПК будет одновременный запуск игры, «скайпа», антивируса и программы кодирования видеофайла. Пусть не типичная, но совсем не фантастическая ситуация, в которой очень сложно корректно измерить скорость работы, так как на результат влияют действия планировщика в составе ОС, который при каждом замере может по-иному распределять задачи и потоки по разным ядрам и давать им различные приоритеты, временны́е интервалы и делать это в разной последовательности. И опять-таки, наиболее важным параметром будет пресловутая плавность работы — характеристика, по аналогии с минимальным fps в играх, которую в данном случае измерить еще сложнее. Что толку от запуска игры или какой-то другой программы одновременно с кодированием видеофайла, если поиграть нормально не удастся из-за рывков изображения? Пусть даже видеофайл быстро сконвертируется, поскольку многоядерный процессор в данном случае может быть и недогружен. Здесь нагрузка на систему памяти будет гораздо больше, чем при исполнении каждой из перечисленных задач по отдельности.

В случае использования ПК как рабочей станции, ситуация одновременного исполнения нескольких приложений даже более типична, чем для домашнего ПК, и сама скорость работы ещё более важна.

Проблемы тестирования

Сразу целая группа факторов снижает чувствительность ЦП-ориентированных тестов к скорости памяти. Очень чувствительные к памяти программы представляют собой плохие тесты ЦП — в том смысле, что они слабо реагируют на модель ЦП. Такие программы могут различать процессоры с контроллером памяти, снижающим латентность доступа к памяти, и без оного, но при этом в пределах одного семейства почти не реагировать на частоту процессора, показывая сходные результаты при работе на частоте 2500 и 3000 МГц. Часто такие приложения отбраковываются как тесты ЦП, ибо тестеру просто непонятно, что лимитирует их производительность, и кажется, что дело в «чудачествах» самой программы. Будет удивительно, если все процессоры (и AMD, и Intel) покажут в тесте одинаковый результат, но такое вполне возможно для приложения, очень сильно зависимого от памяти.

Чтобы избежать упреков в необъективности и вопросов, почему выбрана та или иная программа, в тесты стараются включать только наиболее популярные приложения, которыми все пользуются. Но такая выборка не совсем репрезентативна: наиболее популярные приложения из-за своей массовости часто очень хорошо оптимизированы, а оптимизация программы начинается с оптимизации её работы с памятью — она важнее, например, чем оптимизация под SSE1-2-3-4. Но совсем не все на свете программы так хорошо оптимизируются; попросту на все программы не хватит программистов, которые умеют писать быстрый код. Опять возвращаясь к популярным программам кодирования, многие из них были написаны при непосредственном активном участии инженеров фирм-изготовителей ЦП. Как и некоторые другие популярные ресурсоемкие программы, в частности медленные фильтры двухмерных графических редакторов и движки рендеринга студий трехмерного моделирования.

В свое время было популярно сравнивать компьютерные программы с дорогами. Эта аналогия потребовалась, чтобы объяснить, почему на некоторых программах быстрее работает Pentium 4, а на некоторых Athlon. Интеловский процессор не любил ветвления и быстрее «ехал» по прямым дорогам. Это очень упрощенная аналогия, но она удивительно хорошо передает суть. Особенно интересно, когда две точки на карте соединяют две дороги — «оптимизированная» прямая качественная дорога и «неоптимизированная» кривая ухабистая. В зависимости от выбора одной из дорог, ведущих к цели, выигрывает тот или иной процессор, хотя в каждом случае они делают одно и тоже. То есть на неоптимизированном коде выигрывает Athlon, а при простой оптимизации приложения выигрывает Pentium 4 — и сейчас мы даже не говорим о специальной оптимизации под архитектуру Netburst: в таком случае Pentium 4 мог бы посоревноваться даже с Сore. Другое дело, что хорошие «оптимизированные» дороги строить дорого и долго, и это обстоятельство во многом предопределило печальную участь Netburst.

Но если мы отойдем от популярных наезженных трасс, то окажемся в лесу — там вообще нет никаких дорог. И немало приложений написаны безо всякой оптимизации, что почти неминуемо влечет сильную зависимость от скорости памяти в случае, если объем рабочих данных превышает размер кэша ЦП. К тому же множество программ пишутся на языках программирования, которые в принципе не поддерживают оптимизацию.

Специальный тест памяти

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

Какие плюсы есть у такого подхода? Их очень много. В отличие от «натуральных» программ, возможен контроль над объемом используемой памяти, контроль над её распределением, контроль над количеством потоков. Специальное контролируемое выделение памяти позволяет нивелировать влияние особенностей менеджера памяти программы и операционной системы на производительность, чтобы результаты были не зашумлены, и можно было корректно и быстро тестировать. Точность измерения позволяет производить тест за относительно небольшое время и оценить большее количество конфигураций.

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

В качестве модельной задачи была взята модификация теста Astar из SPEC CPU 2006 Int (кстати, предложенный для включения в этот пакет автором статьи; для теста памяти использован адаптированный для графов алгоритм) и задача сортировки данных с помощью различных алгоритмов. Программа Astar имеет сложный алгоритм с комплексным доступом к памяти, а алгоритмы сортировки числового массива — базовая задача программирования, использующаяся во множестве приложений; она включена, в том числе, для дополнительного подтверждения результатов сложного теста данными производительности простой, но распространенной и классической задачи.

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

Согласно исследованиям набора тестов SPEC CPU 2006, тест Astar — один из нескольких, в наибольшей мере коррелирующих с общим результатом пакета на x86-совместимых процессорах. Но в нашем тесте памяти объем используемых программой данных был увеличен, так как со времени выпуска теста SPEC CPU 2006 типичный объем памяти возрос. Также программа приобрела внутреннюю многопоточность.

Программа Astar реализует алгоритм нахождения пути на карте с помощью одноименного алгоритма. Сама по себе задача типична для компьютерных игр, прежде всего стратегий. Но используемые программные конструкции, в частности множественное применение указателей, также типичны для сложных приложений — например, серверного кода, баз данных или просто кода компьютерной игры, не обязательно искусственного интеллекта.

Программа осуществляет операции с графом, соединяющим пункты карты. То есть каждый элемент содержит ссылки на соседние, они как бы соединены дорогами. Есть два подтеста: в одном граф строится на основе двухмерной матрицы, то есть плоской карты, а во втором — на основе трехмерной матрицы, которая представляет собой некий сложный массив данных. Структура данных аналогична так называемым спискам — популярному способу организации данных в программах с динамическим созданием объектов. Такой тип адресации в целом характерен для объектно-ориентированного ПО. В частности, это практически все финансовые, бухгалтерские, экспертные приложения. И характер их обращений к памяти разительно контрастирует с типом доступа у оптимизированных на низком уровне вычислительных программ, вроде программ видеокодирования.

Каждый из подтестов имеет два варианта реализации многопоточности. В каждом из вариантов запускается N потоков, но в одном каждая из нитей осуществляет поиск пути на собственной карте, а в другом все нити ищут пути одновременно на одной карте. Так получаются несколько различных шаблонов доступа, что делает тест более показательным. Объем используемой памяти по умолчанию в обоих вариантах одинаков.

Таким образом, в первой версии теста получается 6 подтестов:

  • Поиск пути на 2D-матрице, общая карта
  • Поиск пути на 2D-матрице, отдельная карта для каждого потока
  • Поиск пути на 3D-матрице, общая карта
  • Поиск пути на 3D-матрице, отдельная карта для каждого потока
  • Сортировка массива с использованием алгоритма quicksort (локальный доступ к памяти)
  • Сортировка массива с использованием алгоритма heapsort (сложный доступ к памяти)
Результаты теста

Результаты теста отражают время нахождения заданного количества путей и время сортировки массива, то есть меньшее значение соответствует лучшему результату. В первую очередь качественно оценивается: реагирует ли в принципе данный процессор на заданной частоте на изменение частоты памяти или её настройки, частоту шины, тайминги и т. п. То есть отличаются ли результаты теста на данной системе при использовании различных типов памяти, или процессору хватает минимальной скорости.

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

Тест сам по себе не предназначен для точного сравнения различных моделей ЦП, так как из-за того, что организация кэшей и алгоритмы предвыборки данных могут у них существенно отличаться, тест может отчасти благоволить определенным моделям. Но качественная оценка семейств ЦП между собой вполне возможна. А память производства различных компаний устроена одинаково, поэтому здесь субъективная составляющая исключена.

Также тест может быть использован для оценки масштабируемости процессоров по частоте при разгоне или внутри модельного ряда. Он позволяет понять, с какой частоты процессор начинает «затыкаться» в память. Часто процессор формально разгоняется сильно, и синтетические тесты, основанные на выполнении простых арифметических операций, показывают соответствующий изменению частоты прирост, но в памятезависимом приложении прироста может и не быть вообще из-за отсутствия соответствующего прироста в скорости памяти. Другая причина заключается в том, что ядро ЦП теоретически может потреблять больше энергии в случае сложного приложения и начнет либо сбоить, либо само снижать частоту, что не всегда возможно выявить в простых арифметических тестах.

Заключение

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

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

Поэтому быстрая память зачастую является столь же практичным выбором, как покупка внедорожника для человека, который хочет иметь возможность с комфортом передвигаться как по асфальту, так и по дорогам с «неоптимизированным» покрытием.

В чем измеряется производительность процессора:от чего она зависит

Опубликовано 18.06.2018 автор — 0 комментариев

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

Сразу хочется сказать, что это не частота на ядро, как было принято ранее, а совокупность сразу нескольких математических величин, именуемых как FLOPS (FLoating-point Operations Per Second) – внесистемная единица производительности.

От чего зависит вычислительная мощность компьютера, и стоит ли обращать внимание на частотный показатель? Во всем этом мы и постараемся разобраться.

Откуда ноги растут

Довольно часто в интернете можно встретить споры о том, что «Intel тащат за счет большей частоты ядер». Иными словами, частотный параметр ставится во главу стола, а остальные нюансы (количество потоков, размер кэша, работа с определенными инструкциями и техпроцесс) почему-то забываются.

Примерно до начала 2000‑х годов подобное сравнение имело место быть, поскольку характеристики центрального чипа и его скорость упирались именно в частоту. Достаточно вспомнить следующие названия:

  • Pentium 133 и 333;
  • Pentium 800 и т.д.

А потом ситуация резко изменилась, поскольку разработчики стали уделять больше времени строительству внутренней архитектуры чипов, добавляя кэш-память, поддержку новых инструкций, способов вычисления и прочих элементов, которые увеличивают производительность без повышения той самой частоты.На арене появились новые критерии скорости:

  • кэш-память;
  • частота шины данных;
  • разрядность.

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

Что влияет на производительность современных процессоров?

Итак, давайте знакомиться с понятиями, которые характеризуют работу процессора, скорость вычислений и все прочие параметры.

Разрядность – определяет размер обработки данных за такт. На данный момент существуют как 32-битные, так и 64-битные варианты. Представим, что размер данных – 1 байт (8 бит). Если чип вычисляет 4 байта информации за прогон – он 32-битный, если 8 байт – 64-битный.

Логика элементарна до безобразия: при сравнивании 2 ЦП с идентичной частотой и разной разрядностью победит тот, который обладает 64-битным набором логики (разница колеблется от 10 до 20%).

Техпроцесс (литография) – количество транзисторов, размещенных на кристалле. Чем их больше – тем выше мощность, частоты, разгонный потенциал и ниже температура под нагрузкой. Процесс измеряется в нанометрах и на данный момент Компаниями Intel и AMD успешно освоены ЦП на техпроцессе 14 и 12 нм соответственно.

Кэш-память – массив сверхскоростной и эффективной ОЗУ внутри чипа, которая отвечает за основные вычисления и обмен готовыми результатами операций с оперативной памятью ПК и прочими компонентами системы. От объема кэша зависит скорость и работоспособность компьютера.

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

Рабочая температура – показатель, который напрямую влияет на производительность. Если вы решили разогнать чип, и он дошел до своего предела относительно температур – ЦП либо начнет троттлить, либо отключится, вызвав перезагрузку компьютера. Но не стоит злоупотреблять работоспособностью процессора на максимально возможных температурах – кристалл довольно быстро откажет и начнет разрушаться.Системная шина и множитель – отвечают за разгон частот. Если вы хотите заняться оверклокингом, то множитель должен быть разблокирован на камне. Более того, делается это только на соответствующей материнской плате с чипсетом Z370 (Intel Coffee Lake) или B350, X370/X470 (AMD Ryzen).

Потенциал «разгоняемого» камня значительно выше, а потому данная покупка имеет большую ценность на будущее, да и запас прочности кристалла будет существенно выше.

Наличие встроенного графического процессора – дополнительное ядро, ответственное за графические вычисления и дополнительные задачи, связанные с обработкой изображений. Зачастую это полноценный GPU, который, правда, не имеет собственной оперативной памяти и черпает ее из ОЗУ компьютера.

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

Количество физических ядер – определяет не только скорость обработки информации, но и количество одновременно выполняемых задач, с которыми ЦП может справляться без потери мощностей и троттлинга. Здесь ситуация весьма нестандартная по нескольким причинам:

  • большинство рабочих и офисных приложений задействуют от 1 до 4 ядер, а потому здесь на первое место выходит как раз частота чипа;
  • профессиональные приложения, способные использовать абсолютно все рабочие ядра, получают отличную возможность развернуться на полную катушку, обеспечивая высокую скорость работы.

Поддержка многопоточности (Hyper-Threading или SMT) – виртуальное удвоение вычислительных ядер для более грамотного распараллеливания задач в процессе работы.

Грамотное определение производительности

Предположим, что вы более-менее разобрались в ситуации, но все равно не можете понять, какой из процессоров лучше? Возьмем ту же ситуацию с Intel Core i7 8700k, который вполне реально разогнать до 4,9 ГГц на воздушном охлаждении, и AMD Ryzen 7 2700X и его 4,3 ГГц в режиме оверклокинга. Казалось бы – выбор в пользу «синих» очевиден, но на практике «красный» лагерь рвет и мечет.И вот тут уже на помощь приходят те самые бенчмарки, тесты и сравнения двух популярных моделей в реальных рабочих приложениях и синтетике. Одним из наиболее наглядных вариантов выступает бенчмарк Cinebench r15, который показывает статистику модели как в стоке, так и под несколькими видами разгона:

  • автоматический;
  • ручной;
  • экстремальный (издевательства оверклокеров под жидким азотом).

Много полезной информации можно найти на профильных Youtube-каналах и ресурсах типа Sisoftware Sandra

Итоги

Как вы поняли из вышесказанного, тактовая частота – далеко не самый главный показатель мощности процессора, хоть и является основным. Производительность чипа зависит от совокупности нескольких величин, да и пользователь должен четко понимать, для каких целей используется тот или иной ЦП.

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

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

С уважением, автор Андрей Андреев.

На что влияют ядра процессора

На что влияют ядра процессора
Центральный процессор – это основной компонент компьютера, производящий львиную долю вычислений, и от его мощности зависит скорость работы всей системы. В этой статье мы поговорим о том, как влияет количество ядер на производительность CPU.

Ядра центрального процессора

Ядро – это основная составляющая ЦП. Именно здесь производятся все операции и вычисления. Если ядер несколько, то они «общаются» между собой и с другими компонентами системы посредством шины данных. Количество таких «кирпичиков», в зависимости от поставленной задачи, влияет на общую производительность процессора. В целом, чем их больше, тем выше скорость обработки информации, но на деле имеются условия, при которых многоядерные CPU уступают своим менее «упакованным» собратьям.

Внутреннее устройство центрального процессора

Читайте также: Устройство современного процессора

Физические и логические ядра

Многие процессоры Intel, а с недавнего времени и AMD, способны производить расчеты так, что одно физическое ядро оперирует двумя потоками вычислений. Эти потоки называются логическими ядрами. Например, мы можем увидеть в CPU-Z вот такие характеристики:

Ядра и потоки процессора в программе CPU-Z

Отвечает за это технология Hyper Threading (HT) у Intel или Simultaneous Multithreading (SMT) у AMD. Здесь важно понять, что добавленное логическое ядро будет медленнее физического, то есть полноценный четырехъядерный ЦП мощнее двухъядерного того же поколения с HT или SMT в одних и тех же приложениях.

Игры

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

Просчет игрового мира центральным процессором в игре GTA 5

Читайте также: Что делает процессор в играх

Старые проекты, разработанные примерно до 2015 года, в основном не могут загрузить больше 1 – 2 ядер из-за особенностей кода, написанного разработчиками. В этом случае предпочтительнее иметь двухъядерный процессор с высокой частотой, чем восьмиядерный с низкими мегагерцами. Это лишь пример, на практике современные многоядерные ЦП имеют довольно высокую производительность на ядро и в устаревших играх работают хорошо.

Читайте также: На что влияет частота процессора

Одной из первых игр, код которой способен выполняться на нескольких (4 и более) ядрах, загружая их равномерно, стала GTA 5, выпущенная на ПК в 2015 году. С тех пор большинство проектов можно считать многопоточными. Это значит, что у многоядерного процессора есть шанс не отстать от своего высокочастотного коллеги.

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

Программы

Здесь все немного проще, чем с играми, так как мы можем подобрать «камень» для работы в конкретной программе или пакете. Рабочие приложения также бывают однопоточными и многопоточными. Первым нужна высокая производительность на ядро, а вторым большое количество вычислительных потоков. Например, с рендерингом видео или 3D сцен лучше справится многоядерный «проц», а Фотошопу необходимо 1 – 2 мощных ядра.

Работа центрального процессора в программе Cinema 4D

Операционная система

Количество ядер влияет на быстродействие ОС только в том случае, если равняется 1. В остальных случаях системные процессы не нагружают процессор настолько, чтобы были задействованы все ресурсы. Мы сейчас не говорим о вирусах или сбоях, способных «положить на лопатки» любой «камень», а о штатной работе. Впрочем, вместе с системой может быть запущено много фоновых программ, которые также потребляют процессорное время и дополнительные ядра не будут лишними.

Отображение ядер процессора в Диспетчере задач Windows 7

Универсальные решения

Сразу отметим, что многозадачных процессоров не бывает. Есть только модели, способные показывать неплохие результаты во всех приложениях. В качестве примера можно привести шестиядерные CPU с высокой частотой i7 8700, Ryzen R5 2600 (1600) или более пожилые аналогичные «камни», но даже они не могут претендовать на универсальность, если вы параллельно с играми активно работаете с видео и 3D или занимаетесь стримингом.

Заключение

Резюмируя все написанное выше, можно сделать следующий вывод: количество ядер процессора — это характеристика, показывающая общую вычислительную мощность, а вот, каким образом она будет использоваться, зависит от приложения. Для игр вполне сгодится четырехъядерная модель, а для высокоресурсных программ лучше выбрать «камень» с большим количеством потоков.

Отображение ядер процессора в Диспетчере задач Windows 7Мы рады, что смогли помочь Вам в решении проблемы.
Отображение ядер процессора в Диспетчере задач Windows 7Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

ДА НЕТ

На что влияет количество ядер процессора

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

На что влияет количество ядер процессораНа что влияет количество ядер процессора

Ладно бы пользователи просто заблуждались и ничего не теряли. Проблема в том, что неправильное понимание сути многоядерности приводит к финансовым потерям. Пытаясь увеличить производительность, человек тратит деньги на процессор с большим количеством ядер, но не замечает разницы.

Многоядерность и многопоточность

Когда мы изучали вопрос, как узнать количество ядер, то обратили внимание на особенность процессоров Intel – в стандартных инструментах Windows отображается разное число ядер. Это обусловлено работой технологии Hyper-Threading, которая обеспечивает многопоточность.

Чтобы вы больше не путались в понятиях, разберемся раз и навсегда:

  • Многоядерность – чип оснащен несколькими физическими архитектурными ядрами. Их можно увидеть, потрогать руками.
  • Многопоточность – несколько одновременно обрабатываемых потоков информации.
    Ядро может быть физически одно, но программные технологии на его основе создают два потока выполнения задач; два ядра – четыре потока и т.д.

Влияние количества ядер на производительность

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

  • архиваторы;
  • медиапроигрыватели;
  • кодировщики видео;
  • дефрагментаторы;
  • антивирусы;
  • графические редакторы.

Важен принцип разделения потоков. Если компьютер работает на одноядерном процессоре без технологии Hyper-Threading, то операционная система производит моментальные переключения между потоками, так что для пользователя процессы визуально выполняются одновременно. Все действия выполняются в течение миллисекунд, поэтому вы не видите серьезную задержку, если не нагружаете сильно ЦП.

На что влияет количество ядер процессораНа что влияет количество ядер процессора

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

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

На что влияет количество ядер процессораНа что влияет количество ядер процессора

Разработчики игр и программ в курсе об этой особенности, поэтому постоянно оптимизируют код под выполнение задач на многоядерных процессорах. Но эта оптимизация не всегда успевает за увеличением количества ядер, поэтому не стоит тратить огромные деньги на самые новые мощные процессоры с максимально возможным числом поддерживаемых потоков – потенциал чипа не будет раскрываться в 9 программах из 10.

Так сколько ядер выбирать?

Прежде чем покупать процессор с 16 ядрами, подумайте, потребуется ли такое количество потоков для выполнения задач, которые вы будете ставить перед компьютером.

  • Если компьютер приобретается для работы с документами, серфинга в интернете, прослушивания музыки, просмотра фильмов, то хватит двух ядер. Если взять процессор с двумя ядрами из верхнего ценового сегмента с хорошей частотой и поддержкой многопоточности, то не будет проблем при работе с графическими редакторами.
  • Если вы покупаете машину с расчетом на мощную игровую производительность, то сразу ставьте фильтр на 4 ядра минимум. 8 ядер с поддержкой многопоточности – самый топ с запасом на несколько лет. 16 ядер – перспективно, но велика вероятность, что пока вы раскроете потенциал такого чипа, он устареет.

Как я уже говорил, разработчики игр и программ стараются не отставать от прогресса процессоров, но пока огромные мощности просто не нужны. 16 ядер подойдут пользователям, которые занимаются рендерингом видео или серверными вычислениями. Да, в магазинах такие процессоры называют игровыми, но это только для того, чтобы они продавались – геймеров вокруг точно больше, чем тех, кто рендерит видео.

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

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

игровые тесты CPU от Celeron до восьмиядерных Core i7 / Процессоры и память

Сейчас наблюдать за тем, что происходит в сегменте высокопроизводительных CPU, — куда менее увлекательное занятие, чем в былые годы. На то есть несколько причин. Во-первых, AMD надолго оставила попытки отнять у Intel лидерство в вычислительной мощности. Эволюция чипов самой Intel по-прежнему следует закону Мура, но массовый пользователь уже не может воспользоваться ее плодами. С каждым взмахом маятника «тик-так» Intel умеренно повышает число исполняемых инструкций на такт CPU, но тактовые частоты процессоров сейчас немногим выше, чем на заре архитектуры Core. В результате в плане однопоточной производительности архитектура x86 уже давно не показывает больших достижений. Прогресс движется за счет прироста ядер, но стандартные десктопные задачи (не исключая игры) с трудом осваивают многопоточный параллелизм.

Наконец, пользователь, не обремененный профессиональными задачами, которые связаны с тяжелыми расчетами и генерацией мультимедийного контента, просто не столь нуждается в высокопроизводительном CPU, как в былые годы. Все, что нужно, – это подобрать достаточно мощный процессор за приемлемые деньги. В узком случае компьютерных игр, которые остаются едва ли не единственной причиной, побуждающей массового пользователя к апгрейду, требуется CPU, адекватный по производительности графическому процессору и способный обслужить будущие GPU, которые как раз таки приходится менять сравнительно часто, чтобы удовлетворить аппетиты все новых игр.

Однако выбрать достаточно хороший продукт не так просто, как самый лучший или выбрать между Intel и AMD (что имеет смысл только в бюджетной категории). Сравнительные тесты комплектующих – плохие помощники в этом вопросе. GPU, как правило, тестируются на самом мощном оборудовании, доступном тестеру (чтобы именно GPU в этих тестах оказывался “бутылочным горлышком”), а в обзорах CPU игровые тесты стоят далеко не на первом месте и часто довольно далеки от практики (один топовый GPU, небольшой набор игр при низких настройках графики). Мы сегодня проникнем в эту серую зону и попытаемся ответить на следующие вопросы:

  1. Насколько современные игры чувствительны к производительности CPU?
  2. При какой частоте смены кадров (и, соответственно, при использовании каких GPU) процессорозависимость проявляет себя?
  3. Какие именно параметры CPU сильнее всего влияют на игровую производительность (частота, количество ядер, объем кеш-памяти, контроллер RAM и пр.)?
  4. Есть ли разница в процессорозависимости между графическими драйверами AMD и NVIDIA при использовании сопоставимых по мощности GPU?

⇡#Чего ждать и чего не ждать от DirectX 12

Но сначала убедимся в том, что сейчас еще не поздно провести такое тестирование, хотя мы стоим на пороге большого события, которое повлияет на связь между вычислительной мощностью CPU и игровой производительностью. Эффективность использования CPU в играх стала предметом широкой дискуссии, когда AMD представила API Mantle и обратила внимание на то, что у DirectX 11 не все гладко в этой области. Грядущий DirectX 12, который будет официально доступен вместе с Windows 10 уже этим летом, обещает исправить ситуацию. Но было бы ошибкой считать, что DirectX 12 устранит нужду в достаточно мощном CPU для игр, по качеству графики сопоставимых с теми, которые сегодня работают под DirectX 11.

Какое-то преимущество от DirectX 12 получат все игровые системы в силу того, что новый API позволяет распределять компонент нагрузки, относящийся к драйверу GPU, на несколько процессорных ядер.

Тем не менее в фокусе оптимизаций конвейера рендеринга в DirectX 12 находится более узкая задача – снизить нагрузку на CPU при отработке вызовов на отрисовку – draw calls (см. предварительный обзор DirectX 12). Чем больше отдельных объектов существует в трехмерной сцене, тем больше draw calls должен отработать процессор. При этом из-за особенностей DirectX 11 использование циклов CPU возрастает лавинообразно.

Бенчмарк Star Swarm позволил адресно исследовать эту проблему в первые месяцы после выхода Mantle. Сцены с огромным числом корабликов, которые показывает Star Swarm, при использовании DirectX 11 ставят на колени любой компьютер, в то время как под Mantle наблюдается многократный рост частоты смены кадров.

Игроки в массовые мультиплеерные игры легко вспомнят подобные сцены и прекрасно знают, как в них все тормозит. В то же время в однопользовательских играх мы редко наблюдаем обилие объектов, сравнимое со Star Swarm, т.к. разработчики знают о проблеме. Разработчики прекрасно знают, что большое количество draw calls тяжело дается runtime-библиотеке DirectX 11, и не нагружают игры таким образом. Из-за этого первые игровые тесты Mantle в Battlefield 4 и Thief произвели довольно бледное впечатление на фоне сильных (и вполне обоснованных в общем плане) заявлений AMD.

В частности, в Battlefield 4 уловить разницу с DirectX 11 можно только в редких сценах, богатых отдельными объектами. Да и то действительно крупный бонус к производительности возникает либо при совсем слабом двухъядерном CPU, либо при низком качестве графики, когда FPS и без того зашкаливает. С этими тестами можно ознакомиться в нашем отдельном обзоре Mantle.

Все это значит, что Mantle, как и DirectX 12, – еще не волшебная палочка. Благодаря массовому внедрению нового API (маловероятно, что после выхода DX12 найдется место для Mantle), устранившего бутылочное горлышко draw calls, появятся игры со столь богатой графикой, которая практически невозможна в эпоху DirectX 11. Но поскольку draw calls – не единственный источник нагрузки на CPU в играх, проблема «процессорозависимости» как таковая никуда не исчезнет.

⇡#Методика тестирования

Основная трудность таком тесте – огромное количество измерений, которые требуется произвести, чтобы сложилась полная картина. Пришлось пойти на определенные компромиссы. В первую очередь, мы отказались тестировать процессоры AMD (по крайней мере в этот раз), а из продукции Intel сосредоточились на линейке Haswell Refresh для разъема LGA1150 и процессорах Haswell-E (LGA2011-v3).

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

  • Celeron G18XX;
  • Pentium G3XX;
  • Core i3-41XX;
  • Core i3-43XX;
  • Core i5-44XX/45XX/46XX;
  • Core i7-47XX;
  • Core i7-58XX;
  • Core i7-59XX.

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

Четыре младших чипа Haswell не имеют технологии Turbo Boost и под нагрузкой работают при постоянной частоте, что позволяет одним процессором в точности моделировать производительность всех остальных в своей группе. Чипы Core i5 и i7, оснащенные Turbo Boost, нельзя на 100 % заменить старшими моделями, так как множитель базовой частоты, в отличие от максимальной, не регулируется. Выход – тестировать топовый чип на верхней Turbo-частоте соответствующих моделей. Благо на практике Turbo Boost управляет частотой весьма агрессивно.

Разъем CPUМодельЧисло ядерЧисло потоковОбъем кеш-памяти L3, МбайтБазовая частота, ГГцМакс. частота Turbo, ГГцОперативная память
LGA2011-v3Core i7-5960X816203,03,54 × DDR4 SDRAM, 2133 МГц
Core i7-5830K612153,53,7
Core i7-5820K3,33,6
LGA1150Core i7-4790K4884,04,42 × DDR3 SDRAM, 1600 МГц
Core i7-47903,64,0
Core i7-4790S3,24,0
Core i7-4790T2,73,9
Core i7-4785T2,23,2
Core i5-4690K4463,53,9
Core i5-46903,53,9
Core i5-4690S3,23,9
Core i5-45903,33,7
Core i5-4590S3,03,7
Core i5-4690T2,53,5
Core i5-44603,23,4
Core i5-4460S2,93,4
Core i5-4590T2,03,0
Core i5-4460T1,92,7
Core i3-43702443,8
Core i3-43603,7
Core i3-43503,6
Core i3-4360T3,2
Core i3-4350T3,1
Core i3-4340TE2,6
Core i3-41602433,6
Core i3-41503,5
Core i3-4160T3,1
Core i3-4150T3,0
Pentium G34602233,52 × DDR3 SDRAM, 1600 МГц
Pentium G34503,4
Pentium G34403,3
Pentium G32583,22 × DDR3 SDRAM, 1333 МГц
Pentium G32503,2
Pentium G32403,1
Pentium G3450T2,92 × DDR3 SDRAM, 1600 МГц
Pentium G3440T2,8
Pentium G3250T2,82 x DDR3 SDRAM, 1333 МГц
Pentium G3240T2,7
Celeron G18502222,92 × DDR3 SDRAM, 1333 МГц
Celeron G18402,8
Celeron G1840T2,5

Сетка частот у Intel довольно неравномерная. Наибольшее количество моделей в отведенном частотном диапазоне и наименьший шаг тактовой частоты наблюдается в группах Pentium G3XX и Core i5-44XX/45XX/46XX. Рассматривались три варианта частотной последовательности для тестов:

  1. в точности следовать сетке Intel;
  2. варьировать частоту с постоянным шагом 200 МГц;
  3. следовать сетке Intel, избегая позиций, совпадающих по верхней Turbo-частоте или отстоящих на 100 МГц.

Мы остановились на третьем варианте как на наименее трудоемком, но в то же время отражающем частотный диапазон каждого ядра Haswell и опирающемся на модельный ряд Intel. В таблице ниже указаны частоты, доступные каждому ядру по спецификациям Intel. На выделенных частотах проводились тесты.

Celeron G1850
Тактовая частота, ГГц2,52,82,9
Pentium G3258
Тактовая частота, ГГц2,72,82,93,13,23,33,43,5
Core i3-4360
Тактовая частота, ГГц2,63,13,23,63,73,8
Core i5-4690K
Тактовая частота, ГГц2,73,03,43,53,73,9
Core i7-4790K
Тактовая частота, ГГц3,23,944,4
Core i7-5820K
Тактовая частота, ГГц3,63,7
Core i7-5960X
Тактовая частота, ГГц3,5

Но определенную часть многообразия CPU Intel мы все же упустили. Нам не были доступны чипы серии Core i3-41XX (впрочем, от i3-43XX отличающиеся лишь объемом кеша L3), а Pentium G3258, формально «разлоченный», по неизвестным причинам отказался разгоняться множителем на тестовой платформе ASUS SABERTOOTH Z97 MARK 1, поэтому частоты свыше 3,2 ГГц остались для этого чипа недоступными.

⇡#Тестовые стенды

Конфигурация тестовых стендов
Материнская платаASUS SABRETOOTH Z97 MARK 1ASUS RAMPAGE V EXTREME
Оперативная памятьAMD Radeon R9 Gamer Series, 1333/1600 МГц, 2 × 8 ГбайтCorsair Vengeance LPX, 2133 МГц, 4 × 4 Гбайт
ПЗУIntel SSD 520 240 ГбайтIntel SSD 520 240 Гбайт
Блок питанияCorsair AX1200i, 1200 ВтCorsair AX1200i, 1200 Вт
Охлаждение CPUThermalright ArchonThermalright Archon
КорпусCoolerMaster Test Bench V1.0CoolerMaster Test Bench V1.0
Операционная системаWindows 8.1 Pro X64Windows 8.1 Pro X64
ПО для GPU AMDAMD Catalyst Omega 15.4 Beta
ПО для GPU NVIDIA350.12 WHQL
 

Энергосберегающие технологии CPU во всех тестах отключены. В настройках драйвера NVIDIA в качестве процессора для вычисления PhysX выбирается CPU. В настройках AMD настройка Tesselation переводится из состояния AMD Optimized в Use application settings.

⇡#Результаты тестирования: процессорозависимые игры

Перед тем как приступить к тестам, надо понять, на примере каких игр действительно возможно показать процессорозависимость. С этой целью мы в первую очередь взяли игры из нашей постоянной обоймы для тестирования GPU и в них сравнили производительность систем с мощным видеоадаптером (GeForce GTX 980) и самым слабым (двухъядерный Celeron) или самым мощным (восьмиядерный Core i7) CPU.

Бенчмарки: игры
ПрограммаНастройкиПолноэкранное сглаживаниеРазрешение
Tomb Raider, встроенный бенчмаркМакс. качествоSSAA 4x1920 × 1080
Bioshock Infinite, встроенный бенчмаркМакс. качество. Postprocessing: NormalFXAA
Crysis 3 + FRAPSМакс. качество. Начало миссии Post HumanНет
Metro: Last Light, встроенный бенчмаркМакс. качествоНет
Company of Heroes 2, встроенный бенчмаркМакс. качествоНет
Battlefield 4 + FRAPSМакс. качество. Начало миссии TashgarMSAA 4x + FXAA
Thief, встроенный бенчмаркМакс. качествоSSAA 4x + FXAA
Alien: IsolationМакс. качествоSMAA T2X

Настройки игр были выбраны с таким расчетом, чтобы при установке топового GPU частота смены кадров оказалась в диапазоне 60-80 FPS, а при использовании младшего – не опустилась ниже 30 FPS в разрешении 1920 × 1080. При более высоком фреймрейте (как делают в обзорах процессоров, чтобы снизить нагрузку на GPU и выдвинуть на первый план CPU) дополнительная производительность, которую может дать мощный CPU, идет на ветер, а при более низком CPU уже не играет большой роли (что мы продемонстрируем отдельно). Не все игры позволили уложиться в этот диапазон: в Battlefield 4, Bioshock Infinite и Alien: Isolation фреймрейт превышает 60 FPS даже на Celeron. Вот и первые интересные результаты.

Хорошие новости для владельцев слабых CPU: есть игры, мало зависимые от производительности процессора – такие, как Alien: Isolation, и даже абсолютно независимые — Tomb Raider. В Crysis 3 и Bioshock: Infinite частота смены кадров при установке самого мощного процессора вместо самого слабого повышается на 27 и 34 % соответственно. А поскольку Bioshock: Infinite просто-таки летает на GTX 980 с высочайшим фреймрейтом, то толку от любого CPU быстрее Celeron в нем также нет.

В Battlefield 4, Thief, Company of Heroes 2 и Metro: Last Light разница в производительности между Celeron и Core i7 варьирует от 47 до 107 %. Это наиболее процессорозависимые игры, которые мы использовали в дальнейшем тестировании CPU.

ИграIntel Celeron G1850 (2 ядра, 2,5 ГГц)Intel Core i7-5960X (8 ядер, 3,5 ГГц)Рост производительности, %
Metro: Last Light4287107
Company of Heroes 2346179
Thief477968
Battlefield 4629147
Bioshock Infinite9312534
Crysis 3455727
Alien: Isolation11813716
Tomb Raider60600

⇡#Результаты тестирования: различные GPU

Для тестов были выбраны шесть графических адаптеров NVIDIA на GPU архитектуры Kepler и Maxwell, обеспечивающие рост производительности, близкий к линейному: от GeForce GTX 650 – карты начального уровня, до GeForce GTX 980 – флагмана основной линейки GeForce. Почему не AMD? Просто продукции NVIDIA больше на рынке, что позволило без зазрения совести сократить трудозатраты на проведение тестов. Возможно, мы еще вернемся к аналогичному тестированию продукции AMD в следующих обзорах.

МодельГрафический процессорВидеопамятьШина ввода/выводаTDP, Вт
Кодовое названиеЧисло тран-зисторов, млнТех-процесс, нмТактовая частота, МГц: Base Clock / Boost ClockЧисло ядер CUDAЧисло текстур-ных блоковЧисло ROPРазряд-ность шины, битТип микро-схемТактовая частота: реальная (эффектив-ная), МГцОбъем, Мбайт
GeForce GTX 650GK1071300281058/-3843216128GDDR5 SDRAM1250 (5000)1024PCI-Express 3.0 x1664
GeForce GTX 660GK1062 54028980/10339608024192GDDR5 SDRAM1502 (6008)2048PCI-Express 3.0 x16140
GeForce GTX 960GM2062 940281126/117810246432128GDDR5 SDRAM1753 (7010)2048PCI-Express 3.0 x16120
GeForce GTX 770GK1043 540281046/1085153612832256GDDR5 SDRAM1502 (7010)2048PCI-Express 3.0 x16230
GeForce GTX 780GK1107 10028863/900230419248384GDDR5 SDRAM1502 (6008)3072PCI-Express 3.0 x16250
GeForce GTX 980GM2045 200281126/1216204812864256GDDR5 SDRAM1750 (7000)4096PCI-Express 3.0 x16165

Battlefield 4

Battlefield 4 из четырех игр, выбранных для теста, – наименее чувствительная к производительности CPU. Если у вас GeForce GTX 770 или младше, то при использованных настойках любой CPU быстрее младшего Celeron принесет мало пользы. Настоящая процессорозависимость начинается с GTX 780, а на GTX 980 установка топового CPU вместо наиболее слабого поднимает фреймрейт с 66 до 90 FPS. Однако, как мы уже говорили, Battlefield 4 намного больше зависима от видеокарты, раз уж даже Celeron позволяет максимально мощному графическому чипу выдавать более 60 FPS.

Company of Heroes 2

Эта игра – не просто процессорозависимая, тут производительность буквально упирается в CPU. Как иначе объяснить, что четыре видеокарты – от GTX 960 до GTX 980 – так мало отличаются друг от друга даже при использовании топового Core i7? Младший Celeron срезает фреймрейт вдвое на этих адаптерах и попросту уравнивает видеокарты от GTX 660 до GTX 980. А вот у GTX 650 никакой процессорозависимости нет – на нем CoH 2 одинаково неиграбельна при избранных настройках вне зависимости от процессора.

Metro: Last Light

Этой игре, определенно, не помешает хороший процессор. Начиная с GTX 960 и до GTX 980 производительность Celeron становится ограничивающим фактором. 30 FPS можно выжать из GTX 660 и Celeron, а 60 даются только GTX 980 и Core i7.

Thief

Планка производительности CPU начинает давить уже на GTX 960, а на GTX 980 при хорошем процессоре частота смены кадров просто-таки выстреливает. На GTX 660 игра все еще удерживает необходимые 30 FPS и одновременно отсутствует зависимость от CPU.

⇡#Результаты тестирования: AMD vs NVIDIA

Прежде чем мы начнем подробное тестирование CPU на разных частотах, хотелось бы убедиться, что адаптеры AMD подчиняются тем же закономерностям, что и конкуренты от NVIDIA. Здесь мы сравним Radeon R9 290X с близким по производительности GeForce GTX 780.

В ситуации со слабым CPU производительность соперников уравнена, а в связке с Core i7 Radeon реализует небольшое преимущество более быстрого GPU. Исключительным случаем стал Thief, где почему-то R9 290X сильнее пострадал от недостаточно мощного центрального процессора. Но в целом общая закономерность та же самая.

NVIDIA GeForce GTX 780
ИграIntel Celeron G1850 (2 ядра, 2,5 ГГц)Intel Core i7-5960X (8 ядер, 3,5 ГГц)Рост производительности, %
Company of Heroes 22865132
Thief455829
Metro: Last Light406665
Battlefield 4536828
AMD Radeon R9 290X
ИграIntel Celeron G1850 (2 ядра, 2,5 ГГц)Intel Core i7-5960X (8 ядер, 3,5 ГГц)Рост производительности, %
Company of Heroes 22969138
Thief3469103
Metro: Last Light3880111
Battlefield 4577328

⇡#Результаты тестирования: GeForce GTX 980 со всеми CPU

Итак, мы выяснили, какие игры острее всего реагируют на нехватку мощности процессора и в случае каких GPU процессорозависимость чувствуется сильнее всего. Теперь мы выберем наиболее мощный графический адаптер и пронаблюдаем зависимость показателей в “чувствительных” играх со всеми процессорами, участвующими в тестировании. На графиках ниже каждому семейству процессоров соответствует своя линия, а точки на ней отражают процессоры этого семейства с той или иной частотой. В случае шестиядерных Core i7 семейства Haswell-E прямая превращается в точку, поскольку мы условились не рассматривать процессоры, различающиеся всего на 100 МГц.

Battlefield 4

Картина тестов в Battlefield 4 довольно курьезная. Во-первых, игра практически не делает различий между процессорами со словом Core в названии – начиная с начальных версий и вплоть до самых топовых модификаций.

А вот Pentium и Celeron резко отличаются от более старших версий ядра Haswell, не исключая Core i3, хотя это все – двухъядерные процессоры. По-видимому, решающее значение имеет технология Hyper-threading, которая дает Core i3 виртуальные четыре ядра. Ни в одной другой игре эта функция не проявила себя так ярко.

Что еще удивительнее, Celeron и Pentium успешно компенсируют свое незавидное положение приростом тактовой частоты. Частоты 3,2 ГГц Pentium G3258 достаточно, чтобы приблизиться к уровню старших CPU, а если аппроксимировать тренд на частоты до 3,5 (на которых тесты не проводились), то «пень» наверняка достигнет паритета с Core i3/i5/i7.

Company of Heroes 2

Производительность CoH 2 и в самом деле просто упирается в CPU. Игра любит высокие тактовые частоты: каждый чип демонстрирует практически линейный рост частоты смены кадров вместе с ростом тактовой частоты. И также CoH 2 любит многоядерные CPU: при равных частотах прибавка пары ядер дает рывок FPS. Но больше шести ядер CoH 2 задействовать не в силах, и даже наоборот – восьмиядерный процессор тут хуже шестиядерного.

Hyper-threading снова сослужила службу процессорам Core i3, хотя эффект и не столь потрясающий, как в Battlefield 4.

Metro: Last Light

Как и Battlefield 4, эта игра предпочитает ядра частоте. Core i5 на низких частотах чуть сдает, но в остальном четыре (и больше) физических ядра обеспечивают практически одинаковые результаты.

На двухъядерных CPU частота смены кадров бодро растет вместе с тактовой частотой. Эффект от Hyper-threading на Core i3 опять-таки весьма существенный, но и в этом случае частота продолжает сильно влиять на результаты. На высших частотах этот двухъядерник уже грозит топовым чипам Haswell.

Thief

Thief по характеру процессорозависимости мало отличается от Metro: Last Light. Любой CPU с четырьмя (и более) физическими ядрами достаточно хорош для этой игры. Судьбу двухъядерников решает тактовая частота. Core i3, благодаря Hyper-Threading, на высшей частоте подтягивается до уровня своих старших собратьев.

⇡#Выводы

Тестирование принесло массу информативных, подчас довольно неожиданных результатов. Во-первых, девять использованных нами игр в совершенно различной степени зависят от производительности CPU. Есть чрезвычайно зависимые игры (Thief, Company of Heroes 2, Metro: Last Light), среди которых выделяется Company of Heroes 2. Даже самых мощных CPU недостаточно, чтобы в полной мере раскрылись различия между графическими адаптерами средней и высшей категории. Производительность в этой игре реагирует как на число ядер, так и на тактовую частоту процессора. Впрочем, это лишь еще одна проблема Coh3 в дополнение к отсутствию поддержки SLI/CrossFire и в целом невысокой производительности для графики такого уровня. Большинство игр класса AAA все же не имеют таких технических изъянов.

Другие игры мало чувствительны к изменению конфигурации CPU (Alien: Isolation) или вовсе игнорируют ее (Tomb Raider). Но полагаться на счастливый случай не стоит: в целом для игр полезен не только хороший GPU, но и достаточно мощный центральный процессор. Вопрос в соотношении этих двух компонентов.

Будем судить по четверке наиболее требовательных к CPU проектов. Если вы привыкли играть в диапазоне около 30 FPS, то о производительности CPU можно не задумываться: частота смены кадров упирается в видеокарту, а в качестве центрального процессора достаточно даже какого-нибудь Celeron. Требования к CPU возникают тогда, когда GPU уже способен обеспечить 50-60 кадров в секунду и выше при таких же настройках качества графики (игры тестировались на максимуме, при необходимости только полноэкранное сглаживание было принесено в жертву). Скорее всего, то же произойдет и при попытке подтянуть частоту смены кадров с 30 до 60 FPS за счет снижения качества графики – слишком слабый CPU просто не позволит видеокарте оторваться от земли.

Как показал более подробный анализ, три из указанных игр (Battlefield 4, Thief, Metro: Last Light) в первую очередь требуют наличия четырех ядер CPU, а к частоте, на которой те работают, фактически безразличны. С практической точки зрения это сводит выбор к абсолютно любой разновидности Core i5 (цена – от $187 за боксовую версию Core i5-4460). Ни оснащенные Hyper-threading Core i7 для LGA 1150, ни шести- и восьмиядерные CPU для платформы LGA2011 вам в играх (по крайней мере в этих) не пригодятся.

При двух ядрах x86 в паре с хорошей видеокартой ощущается сильная нехватка ресурсов CPU, отчего производительность растет практически линейно вслед за его тактовой частотой. Но здесь примечательно то, что приблизиться к точке, когда потребности высокопроизводительного GPU насыщаются двухъядерным процессором, вполне реально. Для чипов Celeron и Pentium это только теоретическая возможность, поскольку в штатном режиме такие частоты им просто недоступны. При мощном GPU не следует экономить на центральном процессоре настолько сильно. Впрочем, при совсем ограниченном бюджете можно сделать ставку на Pentium G3460 ($82) или разгон Pentium G3258 ($72, имеет разблокированный множитель).

А вот из двухъядерного Core i3 может получиться неплохой игровой процессор, если речь идет о топовой модели в линейке: Core i3-4370 по рекомендованной цене $147 в боксовой комплектации в тестах мало уступил своим четырехъядерным соперникам. Но в это достижение внесла вклад не только высокая частота (3,8 ГГц), но и технология Hyper-threading, которая, конечно, не в силах заменить четырьмя виртуальными ядрами четыре физических ядра Core i5 и Core i7, но существенно отличает Core i3 от процессоров Celeron и Pentium, которые ею не обладают.

Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *