Что такое микрокод Intel? - PullRequest
       32

Что такое микрокод Intel?

75 голосов
/ 06 декабря 2010

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

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


РЕДАКТИРОВАТЬ: Я прочитал статью в Википедии: не выяснил, как я могу написать некоторые на моемсобственный, и что он будет использовать.

Ответы [ 3 ]

76 голосов
/ 06 декабря 2010

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

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

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

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

17 голосов
/ 06 декабря 2010

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

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

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

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

9 голосов
/ 06 декабря 2010

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

...