Тесты удвоения объёма кеша L3 процессора

Зачем нужен кэш и как он влияет на производительность?

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

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

Схема процессорного конвейера ядра intel архитектуры Skylake с выделенными регистрами

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

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

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

Насколько большая разница от изменения объёма?

И встаёт закономерный вопрос: «На сколько же велико влияние?».

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

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

Для некой усреднённой задачи может получится зависимость производительности от цены при изменения объёма кэша примерно такая:

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

Как измерить разницу от объёма?

И перейдём уже к практической области решения данного вопроса.

Для того чтобы понять разницу необходима некая конфигурация систем в которых отличия ограничиваются только объёмом кэш памяти.

В нашем случае это процессоры i7 7700k и i9 9900k. В последнем отключено 4 ядра из восьми (кэш память при этом не отключается).

В данном случае могла бы быть проблема связанная с программными исправлениями аппаратных уязвимостей более новых процессоров. Решена она запуском процессора i9 9900k на материнской плате ASUS Z170i Pro Gaming с BIOS версией 2002. К моменту выхода прошивки этой материнской платы об аппаратных уязвимостях сведений ещё не было и исправления их в тестовых системах — нет.

Про то как установить процессоры 8 и 9 поколений на платы для 6 и 7 поколений процессоров можете посмотреть тут.

Кроме процессора важно выбрать оперативную память. Я решил взять некие средние для DDR4 показатели. Частоту 3600 МГц с таймингами 17-18-18-38 CR2. Все субтайминги материнская плата выставляла автоматически.

Для игр так же стоит упомянуть о видеокарте: Gainward GeForce RTX 2070 Phoenix с небольшим заводским разгоном.

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

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

Результаты

Для начала проведём тест который покажет, что объём кэша действительно разный.

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

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

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

В однопоточном тесте CPU-z разницы от увеличения объёма кеша L3 — нет. В многопоточном разница — 3%

В Cinebench R15 разница 0,4% (незначительно превышает погрешности теста).

Прирост 1,5%.

Тесты которые слабо реагируют на разгон памяти слабо реагируют и на увеличение объёма кэш памяти.

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

Win-rar. Прирост производительности — 35%. Стоит отметить, что встроенный бенчмарк не отражает реальный прирост производительности архиватора.

7-Zip. Прирост 4,5%.

CPU тест 3D Mark Time Spy. Прирост 3,7%

Выводы по бэнчмаркам

В идеальных задачах максимально оптимизированных для процессора и работы с памятью прирост находится в пределах 0-2%.

Для задач имеющий меньшую оптимизацию или связанных с работой с данными прирост от увеличения объёма кэш памяти составил от 3,7 до 35%.

Игры

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

Far Cry 5

(графики кликабельны)

Время кадра
Плотность вероятности
Распределение вероятности

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

Результаты в цифрах:

AVGLow 0.1%Low 1%Low 5%Медиана
FC5 8МБ 3600107.857.268.080.9106.0
FC5 16МБ 3600123.073.282.192.7118.0
Прирост, %14.128.020.814.511.3

Медианный прирост: 11,3%

Прирост по долгим кадрам: Меньшие 0,1% — 28%, Меньшие 1% — 20,8%.

WatchDogs 2

Время кадра
Плотность вероятности
Распределение вероятности
AVGLow 0.1%Low 1%Low 5%Медиана
FC5 8МБ 360051.228.531.937.250.6
FC5 16МБ 360058.734.739.144.358.0
Прирост, %14.621.822.419.114.5

Медианный прирост: 14.5%

Прирост по долгим кадрам: Меньшие 0,1% — 21,8%, Меньшие 1% — 22,4%.

Выводы по играм

Прирост в играх превышает общие значения полученные в бенчмарках (кроме Win-rar) и составляют значения выше 10%, что является довольно значительным показателем.

Видео версия

Общие выводы

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

Видео на YouTube канале "Этот компьютер"

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