Настоящая работа имеет цель установить влияние на производительность процессора такого обыкновенно не принимаемого во внимание фактора как ревизия микрокода CPU. Актуальность темы формируют регулярные обновления микрокодов, суть изменений в которых умалчивается.
В какой-то мере широко освещалась эта тема после выхода микрокодов с патчами от уязвимостей Meltdown и Spectre. Технические ресурсы, проводившие тестирование процессоров с обновленными микрокодами, отметили снижение производительности.
Между тем не был поднят вопрос, какое влияние на производительность оказывает обновление микрокода вообще, без наличия чрезвычайных ситуаций и необходимости «латать» уязвимости. Соответственно, тема была освещена неполно, применительно только лишь к конкретным патчам.
В работе представлена выборка микрокодов ДО патчей от уязвимостей Meltdown и Spectre, соответственно, никакого влияния на результаты они не оказывают. Это позволяет проследить влияние обновлений на производительность вне чрезвычайных ситуаций, но, вместе с тем, не дает исчерпывающей и в полной мере актуальной картины, поскольку микрокоды с соответствующими патчами практически повсеместно вытеснили старые.
В качестве тестируемого процессора использовался i5 6400T. Так как в 76 ревизии микрокода Intel заблокировали возможность разгона Non-K Skylake по шине, были взяты микрокоды с 04 по 74, всего – 20 версий.
Чтобы переменным фактором выступала только лишь ревизия микрокода, постоянство других факторов обеспечивалось следующим образом:
Чтобы операционная система не изменяла ревизию микрокода, был переименован файл «mcupdate_GenuineIntel.dll» по пути «C:\Windows\System32\». Контроль версии микрокода осуществлялся с помощью Aida64.
Тесты проводились в Windows 7 Ultimate x64 SP1 с установкой классической темы и приоритета реального времени на процесс Corona Benchmark. Для каждого микрокода проводилось по два прогона, каждый прогон – после холодного старта. В двух случаях используются результаты трех прогонов.
Результаты измерений и вычислений занесены в таблицу:
| rev_micr | res1, rays/s | res2, rays/s | res3, rays/s | average, rays/s | average | δ | |
| 04 | 1547492 | 1545641 | - | 1546566,5 | 100,273% | 0,060% | |
| 10 | 1547920 | 1535710 |
1547403
|
1543677,667 | 100,086% | 0,516% | |
| 16 | 1545066 | 1548261 | - | 1546663,5 | 100,279% | 0,103% | |
| 1A | 1544850 | 1548325 | - | 1546587,5 | 100,274% | 0,112% | |
| 1C | 1548073 | 1550528 | - | 1549300,5 | 100,450% | 0,079% | |
| 1E | 1545144 | 1537576 |
1548873
|
1543864,333 | 100,098% | 0,407% | |
| 20 | 1539749 | 1544963 | - | 1542356 | 100,000% | 0,169% | |
| 24 | 1548236 | 1547088 | - | 1547662 | 100,344% | 0,037% | |
| 2E | 1539374 | 1546015 | - | 1542694,5 | 100,022% | 0,215% | |
| 30 | 1542613 | 1545941 | - | 1544277 | 100,125% | 0,108% | |
| 32 | 1544226 | 1542251 | - | 1543238,5 | 100,057% | 0,064% | |
| 34 | 1545081 | 1549584 | - | 1547332,5 | 100,323% | 0,146% | |
| 3A | 1541962 | 1545631 | - | 1543796,5 | 100,093% | 0,119% | |
| 4A | 1545926 | 1544305 | - | 1545115,5 | 100,179% | 0,052% | |
| 4C | 1544369 | 1545120 | - | 1544744,5 | 100,155% | 0,024% | |
| 50 | 1545140 | 1544963 | - | 1545051,5 | 100,175% | 0,006% | |
| 56 | 1545798 | 1544560 | - | 1545179 | 100,183% | 0,040% | |
| 5C | 1543981 | 1544560 | - | 1544270,5 | 100,124% | 0,019% | |
| 6A | 1548266 | 1547605 | - | 1547935,5 | 100,362% | 0,021% | |
| 74 | 1546722 | 1548157 | - | 1547439,5 | 100,330% | 0,046% |
За 100% в таблице принят наименьший результат. Разница между ним и наибольшим результатом составляет всего лишь 0,45%. Тем не менее это значение превышает среднюю статистическую погрешность (0,117%).
Скриншоты всех без исключения прогонов, на которых видны параметры процессора и ОЗУ, ревизия микрокода и результат, залиты на Яндекс.диск. Можно сравнить с табличными значениями.
Сосредоточим теперь внимание на другом аспекте – нахождении минимального напряжения на ядра при одинаковом разгоне. Используем все тот же пресет разгона. Следующие параметры были зафиксированы:
В таких условиях находилось минимальное напряжение, при котором процессор мог пройти Corona Benchmark без ошибок. При этом в фоне был открыт HWinfo для мониторинга напряжения. Побочным результатом стала оценка влияния фоновой нагрузки (HWinfo) на результаты.
Результаты занесены в таблицу:
| rev_micr | cvoltage(BIOS), v | cvoltage(HWinfo), v | result, rays/s | result |
|
| 04 | 1,1 | 1,104 | 1523443 | 101,004% | |
| 10 | 1,095 | 1,104 | 1508841 | 100,036% | |
| 16 | 1,1 | 1,104 | 1522889 | 100,968% | |
| 1A | 1,1 | 1,104 | 1511497 | 100,212% | |
| 1C | 1,095 | 1,104 | 1515570 | 100,482% | |
| 1E | 1,1 | 1,104 | 1511991 | 100,245% | |
| 20 | 1,095 | 1,104 | 1513262 | 100,329% | |
| 24 | 1,105 | 1,104 | 1521773 | 100,894% | |
| 2E | 1,095 | 1,104 | 1508293 | 100,000% |
|
| 30 | 1,1 | 1,104 | 1513668 | 100,356% |
|
| 4C | 1,1 | 1,104 | 1512801 | 100,299% | |
| 5C | 1,1 | 1,104 | 1508892 | 100,040% | |
| 6A | 1,105 | 1,104 | 1510187 | 100,126% | |
| 74 | 1,105 | 1,104 | 1511314 | 100,200% |
Следует отметить, что результаты измерения производительности, полученные на данном этапе, менее строги:
Тем не менее можно сделать вывод, что фоновая нагрузка оказывает на результаты Corona Benchmark БОЛЬШЕЕ влияние, чем ревизия микрокода. HWinfo в фоне в среднем снизил результаты на 2 ± 0,37%.
Исходя из результатов тестирования, ревизия микрокода CPU не оказывает сколь-нибудь значимого влияния на производительность. Разница между «худшим» и «лучшим» микрокодом составила 0,45 ± 0,117%. В то же время дополнительная фоновая нагрузка снизила средний результат на 2 ± 0,37%, что в 4 раза больше. Разумеется, ни ту ни другую разницу обнаружить в реальных задачах не удастся.
Стоит однако отметить, что разница в сравнении с новыми микрокодами, где присутствуют патчи от Meltdown и Spectre, вероятно, будет больше.
Практически не повлияла ревизия микрокода и на рабочие напряжения процессора в разгоне. По мониторингу HWinfo наблюдалось абсолютное равенство минимально стабильных напряжений, хоть значения напряжений в BIOS несколько отличались.
Так как тестирование охватывает только половину из всех вышедших для используемого процессора микрокодов (20 из 43), его нельзя назвать всеобъемлющим. Кроме того систематически не исследовано различие разгона на разных версиях микрокода. Больший разгон на определенной версии микрокода мог бы дать более заметное преимущество. Также стоит с большой осторожностью применять выводы о влиянии фоновой нагрузки на процессоры с бОльшим числом потоков, чем тестируемый.