Что такое Intel microcode?



из того, что я читал, он используется для исправления ошибок в процессоре без изменения BIOS.
Из моих базовых знаний о сборке я знаю, что инструкции по сборке разделяются на микрокоды внутри процессора и выполняются соответственно. Но intel каким-то образом дает доступ к некоторым обновлениям во время работы системы.



У кого-нибудь есть больше информации о них? Есть ли какая-либо документация относительно того, что можно сделать с микрокодами и как они могут быть использовали?





изменить:
Я прочитал статью в Википедии: не понял, как я могу написать некоторые самостоятельно, и что это будет использовать.

766   3  

3 ответов:

в прежние времена микрокод активно использовался в CPU: каждая отдельная инструкция была разделена на микрокод. Это позволило относительно сложные наборы команд в скромном процессоре (считайте, что a Motorola 68000, С его многочисленными режимами операндов и восемью 32-разрядными регистрами, помещается в 40000 транзисторов, в то время как одноядерный современный x86 будет иметь более ста миллионы). Это уже не так. По соображениям производительности большинство инструкций теперь "запрограммированы": их интерпретация выполняется негибкой схемой, вне любого микрокода.

в недавнем x86, вполне вероятно, что некоторые сложные инструкции, такие как fsin (который вычисляет функцию синуса по значению с плавающей запятой) реализованы с помощью микрокода, но простые инструкции (включая целочисленное умножение с imul) не являются. Это ограничивает то, что может быть достигнуто с помощью пользовательского микрокода.

как говорится, формат микрокода не только очень специфичен для конкретная модель процессора (например, микрокод для Pentium III и Pentium IV не может свободно обмениваться друг с другом-и, конечно же, использование микрокода Intel для процессора AMD не может быть и речи), но это также строго защищенный секрет. Intel опубликовала метод, с помощью которого операционная система или BIOS материнской платы может обновить микрокод (это должно быть сделано после каждого жесткого сброса; обновление хранится в энергозависимой оперативной памяти), но микрокод содержание без документов. Этот руководство разработчика программного обеспечения Intel® 64 и IA-32 Architectures (том 3a) описывает процедуру обновления (раздел 9.11 "средства обновления микрокода"), но утверждает, что фактический микрокод "зашифрован" и заполнен контрольными суммами. Формулировка достаточно расплывчата, что почти любой вид криптографической защиты может быть скрыт, но суть в том, что в настоящее время невозможно, чтобы люди, кроме Intel, писали и пробовали какой-то пользовательский микрокод.

Если "шифрование" не включает цифровую (асимметричную) подпись и/или если люди в Intel каким-то образом испортили систему защиты, то можно предположить, что некоторые замечательные усилия по обратному инжинирингу может потенциально можно создать такой микрокод, но, учитывая, вероятно, ограниченную применимость (поскольку большинство инструкций жестко подключены), есть вероятность, что это не будет покупать много, что касается мощности программирования.

подумайте свободно о виртуальной машине или симуляторе, где, например, qemu-arm может имитировать процессор arm на хосте x86, в идеале программное обеспечение, работающее на моделируемом arm, понятия не имеет, что это не настоящая рука. Возьмите эту идею на уровень, где весь чип спроектирован таким образом, что он всегда выглядит как x86, программное обеспечение никогда не знает, что внутри чипа есть некоторые программируемые элементы. И что какой-то другой процессор внутри несколько разработан с целью реализация / моделирование x86. Предположительно, популярная линейка продуктов AMD 29000 просто ушла, потому что аппаратная команда и, возможно, процессор/ядро стали кишками раннего клона x86. Transmeta, где работал Линус, имел процессор vliw, который был сделан для низкой мощности x86. В этом случае уровень перевода не был (как и многое другое) секретом. Vliw, очень длинное слово инструкции, RISC принятое к крайности, вид вещи вы строите для этого вида задачи.

нет это не так из уровня эмуляции, как я подразумеваю, там не работает какой-то linux с программой qemu внутри каждого чипа. Это где-то между hardwired, где нет программного обеспечения/микрокода в середине и полной эмуляции удара. Программируемые биты могут быть похожи на ПЛИС, программируемые ворота, или это может быть программное обеспечение или программируемые государственные машины, то есть не программируемые ворота, просто то, что работает на воротах, программируется.

ваши не x86, не большие процессоры типа железа. Возьмите руку для например, они жестко подключены, без микрокода. Микроконтроллеры, рис, и MSP430, AVR и, полагаю, это не платформах. В основном не предполагайте, что все процессоры являются микрокодированными, мало, если таковые имеются. Просто те, с которыми мы имеем дело в ПК, были и могут быть, поэтому может показаться, что все они есть.

Как ни забавно играть с этим микрокодом, он, вероятно, очень специфичен для семейства процессоров, и вы, вероятно, никогда не получите доступ к тому, как он работает, если вы не работаете для Intel или AMD, каждый из которых, вероятно, имеет свои собственные внутренние устройства. Поэтому вам нужно будет получить работу в одном из двух, а затем пробиться через окопы, чтобы стать одним из того, что, вероятно, элитная команда, которая делает эту работу. И как только Вы дойдете до этого, ваша карьера окажется в ловушке, ваши навыки могут быть ограничены одной работой в одной компании. Возможно, Вам будет интереснее программировать отдельные графические процессоры на видеокарте, что-то, что документировано или, по крайней мере, имеет инструменты, что вы можете сделать сегодня, не тратя 10 годы в AMD или Intel, возможно, никуда не денутся.

обычно вы не пишете микро-код. Для этого требуется глубокое знание микроархитектуры процессора. Intel вообще не выпускает никакой информации ни о своей микроархитектуре, ни о своем микрокоде.

Comments

    Ничего не найдено.