Pull to refresh

Comments 21

Интересно, что патчи с обновлением микрокода Intel выпускает Microsoft, а не сама Intel.
Intel выпускает обновлённый микрокод, а MS выпускает патчи с этим микрокодом.
Микрокод может быть загружен либо BIOS'ом материнской платы, либо операционной системой. Да вот незадача — производителям материнок платы снятые с производства становятся очень быстро не интересны. Поэтому обновления биоса со свежим микрокодом по них нет.
А так Intel раздаёт микрокод своим партнёрам (а может и всем желающим, не знаю) и они выпускают патчи. MS кстати такие патчи выпускает только под Windows 10 и производные от неё серверные ОС. Т.е. для Windows 8.1 и Server 2012 R2 таких патчей нет, хотя сами эти ОС ещё на поддержке находятся.
В дистрибутивах на основе Linux вроде бы проблем с выходом подобных патчей нет (не очень силён в Linux'е). Под Ubuntu по крайней мере вышел уже.
UFO landed and left these words here
Каждый раз грузится. По крайней мере в x86-процессорах (за всё разнообразие не ручаюсь).
Да вот незадача — производителям материнок платы снятые с производства становятся очень быстро не интересны. Поэтому обновления биоса со свежим микрокодом по них нет.
Большинство пользователей не обновляет прошивку платы даже при наличии новых версий.
Согласен. В этом плане загрузка микрокода средствами ОС выглядит более логичной.
UFO landed and left these words here

Например, линукс применяет это где-то на ранних этапах запуска ядра. Ему надо указать параметром загрузки путь до файла intel_ucode.img, или как-то так. Можно погуглить механизм того как линукс его применяет, скорее всего у процессора есть специальные фичи для таких фокусов.

UFO landed and left these words here

А другие процессоры, к счастью, делает не интел…


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

Вот вам документация 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.

В статье речь про обновление Firmware внутри процессора.

Обновление не снижает производительность?
Скорее всего опять на доли процента, затронуты вновь процы на «старой» архитектуре (до 10 поколения включительно).

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

UFO landed and left these words here
А где вообще можно почитать, что Интел в своем микрокоде меняет, историю версий? А то на мой проц у меня есть 4 варианта микрокода. Хотелось бы знать что именно там изменено.
Sign up to leave a comment.

Other news