Происхождение слова «прошивка» - это середина между аппаратным и программным обеспечением - программным обеспечением, встроенным в аппаратное обеспечение. Это относится к программному обеспечению, которое хранится в энергонезависимой памяти на аппаратном устройстве. Примерами являются EEPROM и флэш-память, встроенные в аппаратные устройства, когда они используются для хранения кода, который выполняется самим устройством.
В некоторых типах аппаратного обеспечения все чаще встречается его «прошивка», которая хранится в программном драйвере и загружается на устройство при загрузке / инициализации, а не остается навсегда на устройстве. В настоящее время нет ничего сложного, например, сохранить несколько сотен килобайт кода прошивки в программном драйвере, загруженном на хост-ОС, и отправить его на устройство, как оно было инициализировано драйвером.
Это часто называют «прошивкой», хотя в зависимости от того, какую прошивку вы принимаете, технически вы не можете считать ее прошивкой, поскольку она не установлена на аппаратном обеспечении (если вы отсоединяете аппаратное обеспечение и вставляете его в другую систему, не будет сохранять эту версию "прошивки").
Микрокод является подмножеством этого последнего типа «прошивки». Микрокод не является общим термином для всех «прошивок», которые загружаются на устройство при загрузке. Вместо этого он специфичен для процессоров, где микрокод в основном формирует слой перевода между стандартными инструкциями CPU более высокого уровня и операциями более низкого уровня, специфичными для этого CPU. Он загружается в CPU при загрузке с помощью BIOS, но может быть позже заменен на этапе загрузки операционной системой.
Обновление микрокода может позволить изменить низкоуровневое поведение ЦП, чтобы обойти определенные, еще не обнаруженные ошибки, без необходимости замены аппаратного обеспечения ЦП. Микрокод обычно содержит наиболее эффективное отображение от команд более высокого уровня до нижнего уровня для наилучшей скорости и энергоэффективности, поэтому иногда, когда изменение микрокода необходимо для исправления некоторой ошибки, это может привести к снижению производительности.
Обратите внимание, что Meltdown (уязвимость, затрагивающая только микросхемы Intel) не может быть исправлена только с помощью обновлений микрокода и требует изменений в функциональности базовой ОС, что может еще больше снизить производительность. Spectre (уязвимость, затрагивающая чипы Intel, AMD и ARM) может быть обойден только с помощью обновлений микрокода.
Чтобы ответить на некоторые ваши конкретные вопросы с момента вашего редактирования:
Да, микрокод - это в основном прошивка, которая работает на процессоре. Специальный термин «микрокод», в частности, относится к микропрограммному обеспечению процессора, которое содержит схему для перевода со стандартного машинного языка на инструкции процессора низкого уровня. Так что это более конкретный термин, чем прошивка.
Обратите внимание, что, как я обсуждал выше, он не сохраняется на процессоре, пока он выключен, а загружается на него каждый раз при загрузке, поэтому в некотором смысле он не работает как традиционная прошивка. Тем не менее, многие аппаратные средства делают это сейчас и до сих пор называют «прошивками», поэтому называть их прошивками приемлемо.
Я не думаю, что ты не прав. Прошивка не должна быть написана на определенном машинном языке, и ее выполнение не должно запускаться определенным образом. На определенном низком уровне весь машинный код является «данными», которые «читаются» процессором и интерпретируются определенным образом.
Термин «микрокод» обычно используется только для основных процессоров, а не для видеокарт или другого оборудования, даже если на этих других устройствах код может быть загружен таким же образом.