Альтернативный набор команд
Альтернативный набор инструкций (AIS) — это вторая 32-битная архитектура набора команд, встречающаяся в некоторых процессорах x86, созданных VIA Technologies . На этих процессорах VIA C3 доступ ко второму скрытому режиму процессора осуществляется путем выполнения инструкции x86. JMPAI
( 0F 3F
). [1] Если режим AIS включен, процессор выполнит команду JMP EAX. [2] и начать выполнение инструкций AIS по адресу регистра EAX . Использование AIS обеспечивает собственный доступ к Centaur Technology, , разработанному ядру RISC внутри процессора. [3]
Формат инструкции
[ редактировать ]номер АИС | имя x86 |
---|---|
Р0 | ЕАХ |
Р1 | ЭКХ |
Р2 | ЭДКС |
Р3 | ЕВХ |
Р4 | ESP |
Р5 | ЭБП |
Р6 | КАК |
Р7 | БЫЛ |
Р8–Р15 | … |
Производитель описывает альтернативный набор инструкций как «расширенный набор инструкций для целых чисел, MMX , с плавающей запятой и 3DNow!, а также дополнительные регистры и некоторые более мощные формы команд». [2] Каждая инструкция AIS имеет префикс 3-байтовой последовательности. 0x8D8400
за которым следует 32-битная инструкция; эта форма префикса для инструкций AIS делает их похожими на адрес эффективной нагрузки x86 ( LEA
) инструкции.В 2018 году исследователь Кристофер Домас сообщил, что префикс 0x620405
(х86 BOUND
) тоже сработало.
Предложение, сделанное в 2002 году о добавлении поддержки AIS в Netwide Assembler (NASM), было частично отклонено в 2005 году на том основании, что NASM — это ассемблер x86, а AIS — это отдельный набор команд. [4] Ассемблер доступен в исследовании Домаса за 2018 год. [5]
В 2007 году в патенте некоторые инструкции микрокода были названы load
и store
в/из основной оперативной памяти и loadPRAM
и storePRAM
в/из частной оперативной памяти внутри процессора. [6] Группа проверки Centaur Technologies в статье 2014 года о VIA Nano включила несколько коротких списков микроинструкций, в том числе ADDIG
, JLINK
, JMP_ALL
, MVIG
, NLOOPE
, STORE_PRAM
, плюс микрооперации XADD
и XSUB
. Было показано, что микрооперации имеют формат, включающий поля opcode
, exec unit
, src width
, src1
, src2
, dest width
, dest
, write flags?
и end routine?
. [7]
Справочник по программированию 2002 года для набора альтернативных инструкций. [8] и сопровождающее приложение [1] были добавлены в архив Bitsavers в мае 2021 года.
Доступность
[ редактировать ]В режиме x86 доступность альтернативного набора инструкций можно определить, выполнив CPUID с установленным в регистре EAX значением. 0xc0000001
а затем проверяем регистр EDX. EDX Если бит 0 установлен в 1, то поддерживается AIS. EDX Если бит 1 также установлен в 1, то AIS включен. [9] Если AIS поддерживается ЦП, то его состояние можно проверить и изменить через регистры, специфичные для модели , путем проверки и установки регистра управления функциями (FCR, регистр 0x1107). Если бит 0 (" ALTINST
") установлено в 1, то AIS включен. [9]
Ядро Microsoft Windows NT KiGetFeatureBits()
Функция инициализации заранее отключает режим альтернативных инструкций при загрузке. [10] Если х86 JMPAI
Инструкция перехода выполняется, когда режим AIS отключен, тогда процессор генерирует исключение недействительной инструкции. [11] Установка бита включения AIS требует привилегированного доступа и должна устанавливаться с использованием последовательности чтения-изменения-записи . [11]
Повышение привилегий
[ редактировать ]В 2018 году Кристофер Домас обнаружил, что некоторые процессоры Samuel 2 поставляются с включенным по умолчанию альтернативным набором инструкций и что, выполняя инструкции AIS из пользовательского пространства , можно получить повышение привилегий с Ring 3 до Ring 0. [5] Домас частично перепроектировал набор инструкций AIS, используя автоматический фаззинг для кластера из семи тонких клиентов . [12] Домас использовал термины «глубоко встроенное ядро» (DEC) плюс «глубоко встроенный набор команд» (DEIS) для набора команд RISC, «инструкция запуска» для JMPAI
, «инструкция моста» для оболочки префикса x86, «регистр глобальной конфигурации» для регистра управления функциями (FCR) и документировал повышение привилегий под названием « Rosenbridge ». [5]
См. также
[ редактировать ]- NEC V20/V30 , x86-совместимый процессор, реализующий аналогичную схему для входа и выхода в режим альтернативного набора команд для поддержки инструкций Intel 8080 .
Ссылки
[ редактировать ]- ^ Перейти обратно: а б VIA, Замечания по применению альтернативного набора команд процессора VIA C3 , версия 0.24, 2002 г. По состоянию на 26 апреля 2023 г.
- ^ Перейти обратно: а б Альтернативный набор инструкций (PDF) . ВИА Эдем (Репортаж). Техническое описание процессора встроенной системной платформы. Ноябрь 2002. с. 70–71 . Проверено 10 августа 2018 г.
- ^ Стиллер, Андреас (22 января 2003 г.). « Процессор VIA седьмого поколения». Heise Online (на немецком языке). Хайнц Хайзе . Проверено 12 августа 2018 г.
Как... RISC-подобное ядро Nehemiah также можно запрограммировать самостоятельно (AIS: альтернативный набор инструкций). Здесь также еще неизвестно, смогут ли изобретательные программисты использовать это для того или иного драйвера, чтобы добиться большей производительности.
- ^ «#21 добавить поддержку AIS Centaur» . Сетевой ассемблер . 18 декабря 2002 г. Проверено 12 августа 2018 г. - через Sourceforge.
- ^ Перейти обратно: а б с Домас, Кристофер. «Розенбридж: Аппаратные бэкдоры в процессорах x86» . Гитхаб . Проверено 10 августа 2018 г.
- ^ патент США 20080256336 , Генри Г. Гленн ; Эдди, Колин и Хукер, Родни Э. и др., «Микропроцессор с собственным микрокодовым ОЗУ», опубликовано 16 октября 2008 г., выпущено 2 ноября 2010 г.
- ^ Дэвис, Джаред; Слободова, Анна; Сордз, Сол (20 апреля 2016 г.). «Верификация микрокода — еще одна часть головоломки проверки микропроцессора» (PDF) . Проверено 14 августа 2018 г.
- ^ VIA, Справочник по программированию альтернативного набора команд процессора VIA C3 , версия 0.25, ноябрь 2002 г. По состоянию на 26 апреля 2023 г.
- ^ Перейти обратно: а б Расширенные функции инструкций CPUID Centaur (PDF) . Техническое описание процессора встроенной системной платформы VIA Eden-N (отчет). 22 октября 2004 г. п. 20, 74 . Проверено 10 августа 2018 г.
- ^ Майкрософт. "kernlini.c" . Исходный код ядра Microsoft Windows NT . Проверено 14 августа 2018 г.
KiGetFeatureBits() … // Отключаем бит 0, который управляет функцией Cyrix ALTINST.
- ^ Перейти обратно: а б Альтернативное выполнение инструкций (PDF) . Техническое описание процессора VIA C3 Samuel 2 (отчет). Октябрь 2004 г. с. 60.
- ^ Вагенсейл, Пол (9 августа 2018 г.). «Хакер обнаружил скрытый «режим Бога» на старых процессорах x86» . Аппаратное обеспечение Тома . Проверено 10 августа 2018 г.
Дальнейшее чтение
[ редактировать ]- Патент США 20030154359 , Генри, Гленн ; Хукер, Родни и Паркс, Терри, «Аппарат и метод расширения набора команд микропроцессора», опубликовано 14 августа 2003 г., выпущено 20 февраля 2007 г., передано Centaur Technology.
- Патент США 20030188130 , Генри, Гленн ; Хукер, Родни и Паркс, Терри, «Механизм увеличения количества регистров в микропроцессоре», опубликовано 2 октября 2003 г., выпущено 13 мая 2008 г., передано Centaur Technology.
- Домас, Кристофер (10 августа 2018 г.). Режим бога разблокирован: аппаратные бэкдоры в процессорах x86 (PDF) . DEF CON 26. Лас-Вегас.
- Трейси Киддер . Душа новой машины . Комментарии об использовании битов режима в процессорах в контексте создания Data General компании компьютера Eagle .