Comments 21
Интересно, что патчи с обновлением микрокода Intel выпускает Microsoft, а не сама Intel.
Intel выпускает обновлённый микрокод, а MS выпускает патчи с этим микрокодом.
Микрокод может быть загружен либо BIOS'ом материнской платы, либо операционной системой. Да вот незадача — производителям материнок платы снятые с производства становятся очень быстро не интересны. Поэтому обновления биоса со свежим микрокодом по них нет.
А так Intel раздаёт микрокод своим партнёрам (а может и всем желающим, не знаю) и они выпускают патчи. MS кстати такие патчи выпускает только под Windows 10 и производные от неё серверные ОС. Т.е. для Windows 8.1 и Server 2012 R2 таких патчей нет, хотя сами эти ОС ещё на поддержке находятся.
В дистрибутивах на основе Linux вроде бы проблем с выходом подобных патчей нет (не очень силён в Linux'е). Под Ubuntu по крайней мере вышел уже.
Микрокод может быть загружен либо BIOS'ом материнской платы, либо операционной системой. Да вот незадача — производителям материнок платы снятые с производства становятся очень быстро не интересны. Поэтому обновления биоса со свежим микрокодом по них нет.
А так Intel раздаёт микрокод своим партнёрам (а может и всем желающим, не знаю) и они выпускают патчи. MS кстати такие патчи выпускает только под Windows 10 и производные от неё серверные ОС. Т.е. для Windows 8.1 и Server 2012 R2 таких патчей нет, хотя сами эти ОС ещё на поддержке находятся.
В дистрибутивах на основе Linux вроде бы проблем с выходом подобных патчей нет (не очень силён в Linux'е). Под Ubuntu по крайней мере вышел уже.
Да вот незадача — производителям материнок платы снятые с производства становятся очень быстро не интересны. Поэтому обновления биоса со свежим микрокодом по них нет.Большинство пользователей не обновляет прошивку платы даже при наличии новых версий.
Например, линукс применяет это где-то на ранних этапах запуска ядра. Ему надо указать параметром загрузки путь до файла intel_ucode.img, или как-то так. Можно погуглить механизм того как линукс его применяет, скорее всего у процессора есть специальные фичи для таких фокусов.
А другие процессоры, к счастью, делает не интел…
В любой момент времени, находясь в привелегированном режиме, можно загрузить в память блоб с микрокодом и вызвать соответствующую инструкцию, передав ей указатель на начало блоба, возможно длину и другие параметры.
Вот вам документация Intel, просвещайтесь.
Procedure for Runtime Microcode Update
To load an update during runtime, software should synchronize all logical processors within the system (perform a rendezvous) to load the update in a coordinated manner.
Once all logical processors have been synchronized, one logical processor in each core should load the update while sibling logical processors wait in a spin loop of only basic instructions. Some guidelines are:
The spin loop should not contain MWAIT or HLT. PAUSE or LFENCE may be used to throttle the loop.
Software may load microcode on each core in parallel.
To help improve performance, software should check that the microcode is newer than what is already loaded immediately prior to doing the write. This may avoid redundant microcode updates, especially on processors where a microcode update also updates microcode on other cores.
You can see an example of the microcode update procedure below:microcode_update_sync() { primary_thread_done = 0 check in to MCU_GO barrier wait for MCU_GO barrier if (primary_thread_of_core) { // always true if no HT cpuid rev_id = rdmsr(0x8b).edx if (update_id < 0 || update_id > rev_id) { load_update() } primary_thread_done = 1 } else { // other HW threads (if they exist) while (primary_thread_done == 0) { pause //lfence is also acceptable } cpuid rev_id = rdmsr(0x8b).edx if (update_id != rev_id && (update_id < 0 || update_id > rev_id)) { load_update() } } check in to MCU_DONE barrier wait for MCU_DONE barrier }
Может совпадение, но у меня уже дважды обновление выводило из строя сервер на 2012 R2. Оживает только после перепрошивки программатором.
Было бы весьма странно, если бы обновления Windows выпускала не Microsoft.
Обновление не снижает производительность?
Скорее всего опять на доли процента, затронуты вновь процы на «старой» архитектуре (до 10 поколения включительно).
Тут пишут об общей потере из-за всех заплаток до четверти производительности:
https://forum.ixbt.com/topic.cgi?id=8:25969:5332#5332
https://forum.ixbt.com/topic.cgi?id=8:25969:5332#5332
А где вообще можно почитать, что Интел в своем микрокоде меняет, историю версий? А то на мой проц у меня есть 4 варианта микрокода. Хотелось бы знать что именно там изменено.
Sign up to leave a comment.
Microsoft выпустила обновления для Windows 10 c исправлением микрокода Intel — патчи против уязвимости типа Platypus