[Примітка: ця відповідь спеціально призначена для вирішення останнього редагування, інакше не додає до кількох надійних відповідей, які вже були опубліковані.]
Отже, ще раз повторюю: мікрокод (принаймні до першого наближення) - це специфічний вид прошивки.
"Мікрокод" в цьому контексті є лише маркетингом через "прошивку процесора".
Ну, це не маркетинг. Маркетинг називав би це XBoost Pro (TM) або щось подібне. Скоріше, це інженерний термін; якщо ви розробляєте процесори, для вас важливо розмежування мікрокоду та іншої мікропрограми процесора (і типу прошивки, характерної для інших пристроїв). Якщо ні, то, ймовірно, це не так.
Якщо ви розробляєте материнські плати або записуєте операційні системи, ви, ймовірно, використовуєте "оновлення мікрокоду" як скорочення для більш невмілого та менш звичного "оновлення прошивки процесора". Більшість оновлень прошивки процесора в першу чергу впливають на мікрокод, тому це досить близько до тієї ж речі. Ви, мабуть, знаєте різницю, але вам це не потрібно дбати .
Кінцевому користувачеві не потрібно знати або піклуватися про різницю, і в ідеальному світі взагалі ніколи не почуєш слово "мікрокод".
Я здогадуюсь, що він звернувся до вас у висвітленні преси останніх спекулятивних вразливих місць виконання, хоча ви, можливо, також чули це раніше в контексті, який зробив більш очевидним, що вам не потрібно дбати. Ці вразливості були звільнені раніше, ніж планувалося, що, можливо, призвело до того, що висвітлення в пресі було менш кураторним, ніж могло б бути інакше. З точки зору кінцевого користувача, вам потрібно встановити оновлення BIOS, оновлення операційної системи, а в деяких випадках і оновлення програм; вам не потрібно ні знати, ні дбати, що якщо будь-який з них включає новий мікрокод.
Тож, навіть усвідомлюючи, що вам, мабуть, не потрібно знати чи дбати, ви все ще можете зацікавити з чистої цікавості: як ви можете розібратися з мікрокодом від інших мікропрограм?
Ну, перше, що слід визнати, це те, що не обов'язково є єдине тверде і швидке визначення, це більше ситуація з Блеггом і Рубесом . Однак ми можемо сказати про мікрокод:
Мікрокод, як правило, працює всередині процесора, а не в процесорі. Це вигляд на високому рівні.
Архітектура мікрокоду зазвичай виглядає зовсім інакше, ніж архітектура звичайного коду, включаючи звичайну прошивку. Це, ймовірно, буде дуже паралельним і буде реалізовано набагато ближче до обладнання. Кілька існуючих відповідей (включаючи власну відповідь) обговорюють це, хоча слід зазначити, що деталі можуть відрізнятися залежно від дизайну процесора.
Хоча апаратне забезпечення часто призначене для роботи лише з прошивкою, що надається виробником, це не є рідкістю для використання сторонніх мікропрограмних програм - хоча це, мабуть, скасує гарантію! Сторонній мікрокод набагато рідше, хоча я вважаю, що в стародавні часи (я говорю про те, коли процесор мав розмір хлібопекарської скриньки) деякі кінцеві користувачі змінювали б мікрокод у своїх процесорах. Наскільки мені відомо, це неможливо у вигляді процесорів, що використовуються на ПК.
Мікрокод зазвичай перекладає або допомагає реалізувати загальнодоступну архітектуру набору інструкцій, тобто він запускає машинний код, який використовують дизайнер операційної системи та прикладні програмісти. Детальніше про це у наступному розділі.
У цій парадигмі використовується велика кількість відповідей "Виконання проти даних"
Я боюся заплутано різними способами, але торкнуся власного коментаря. Цей розділ також служить для розширення останньої точки кулі вгорі. Мета полягає в тому, щоб спробувати розрізнити роботу, яку виконує процесор (досягнута комбінацією апаратного забезпечення та мікрокоду), і роботу, яку виконує типовий пристрій (досягнута комбінацією апаратного забезпечення та мікропрограмного забезпечення). Я збираюся вибрати накопичувач жорсткого диска SATA.
Привід SATA слідує інструкціям з комп’ютера, які знаходяться у рядку "зчитування даних із сектору 5,123" та "записування цих даних у сектор 1,321". Прошивка диска відповідає за те, щоб апаратне забезпечення цього відбулося, і це, як правило, досить звичайний код, який працює на якомусь вбудованому процесорі. Інструкції накопичувача надходять послідовно, хоча вони можуть не оброблятися в тому порядку, в якому вони прибули. Ці інструкції не є програмою, вони надсилаються програмою, що працює на основному процесорі. Зокрема, немає потоку управління, тобто немає вказівок, які слід вказувати SATA-диску, які вказівки виконувати далі.
Процесор відповідає за комп'ютер. Після завершення ініціалізації він виконує інструкції ("машинний код"), надані материнською платою (BIOS, інший тип вбудованого програмного забезпечення), які спрямовують його на запуск машинного коду, наданого операційною системою, що спрямовує його на виконання наданого машинного коду. від постачальників додатків. Сам процесор отримує машинний код з EEPROM (у випадку BIOS) або RAM (у випадку операційної системи та додатків). Зокрема, машинний код має потік управління: машинний код повідомляє ЦП, який машинний код виконувати далі. Ви можете повторно перебирати один і той же машинний код, ви можете запускати різні біти коду залежно від даних, над якими працює код - інструкції на мові інтерфейсу пристрою, як код SATA, можуть виконувати обмежений набір простих завдань, але машинний код може робитищо завгодно . (Див. Також повноту Тьюрінга .)
Ми можемо переписати цю кінцеву точку кулі вище: мікрокод, як правило, реалізує мову Turing Complete; звичайна прошивка зазвичай ні.
Що означає говорити "інструкції по апаратній інтерпретації" з мікрокодом.
Правда, але, ймовірно, заплутано; Важливим моментом є відмінність між машинним кодом, який має потік управління і є Turing Complete, та інструкціями, визначеними інтерфейсом пристрою, таким як SATA, який не є і не є.
Чи застосовується "мікрокод" до коду, який працює на звукових картах
Ні, звукові карти отримують інструкції, а не код, як і диски SATA. Інструкції можуть виглядати як "грати різко" або "інтерпретувати ці дані як форму хвилі та грати на ній". Ще дуже просто.
та відеокарти (GPU)?
Старомодні відеокарти (ті, що не мають графічних процесорів) такі ж, як SATA-накопичувачі. Інструкції виглядають так, як "встановіть цей піксель на цей колір" або "напишіть А на цю позицію".
... Графічні процесори складні і сидять десь між двома світами, які я намагався описати вище. Напевно, найпростіше думати про них як про спеціалізований комп'ютер, що сидить усередині основного комп'ютера, у якого є свої ЦП. Це правда, що такі пристрої, як SATA-накопичувачі, також мають вбудовані процесори, але різниця полягає в тому, що вбудований процесор на приводі SATA працює лише з кодом, наданим виробником диска, тоді як графічні процесори також виконують код, наданий операційною системою та / або постачальником додатків. Дійсно, це зовсім окреме питання.
TL; DR: мікрокод - це специфічний вид вбудованого програмного забезпечення, який допомагає апаратному забезпечити реалізацію набору інструкцій Turing Complete.