Измерение производительности раритетных, а иногда даже антикварных платформ является важным направлением в тематике «Компостера». Давайте остановимся на одном из многочисленных препятствий, неизбежно сопровождающих исследования прошлого.
Условия эксперимента
Нашей целью была инсталляция Windows 10 на платформах, поддерживающих только уставревшие модели процессоров Pentium 4. В порядке эксперимента мы попытались установить 32-битную версию современной операционной системы на материнской плате ASRock P4Dual-915GL с Intel Pentium 4 (Northwood) на борту. Процессор работает на частоте 2400 MHz (18 x 133), оперативная память — два DIMM-модуля DDR400 общим объемом 2 гигабайта.
Проблема
Инсталлятор в режиме загрузки с носителя, на который записан ISO-образ (Flash Drive или DVD), циклически перезагружается. Чтобы получить больше информации о причинах сбоя, запустим инсталлятор Windows 10 в среде ранее установленной операционной системы Windows 7.

Рис 1. Сообщение, выдаваемое инсталлятором Windows 10 при запуске в среде Windows 7
ОС сообщает о критической важности технологии NX. Проверяем информацию, доступную посредством инструкции CPUID. Функциональность NX действительно отсутствует в данном процессоре:

Рис 2. Детектирование поддержки NX посредством инструкции CPUID function 80000001h, register EDX, bit 20 = NX
Почему нельзя выполнять данные?
Аббревиатура NX (No eXecute pages protection) и ее синоним XD (eXecution Disable) запрещают платформе интерпретировать данные как выполняемый код (запрет выполнения данных). Так выполняется блокировка вредоносных сценариев — один из способов защиты персональной платформы от вирусных атак.
В основе этой технологии — добавление в дескрипторы страниц дополнительного бита, содержащего атрибут защиты от выполнения. В классической 32-битной архитектуре дифференцирование между кодом и данными осуществляется средствами сегментации, хотя роль сегментации нивелируется даже 32-битными ОС. В 64-битной архитектуре роль сегментации существенно минимизирована, поэтому стал актуальным перенос механизма дифференцирования кода и данных на уровень страниц. 32-битные процессоры с поддержкой NX — это, как правило, процессоры под Socket 775, выпущенные уже после появления 64-битных чипов.

Рис 3. Формат элемента Page Directory Entry в режиме 64-битной трансляции страниц
(фрагмент документации AMD)
Как следует из иллюстрации, флаг NX, используемый механизмом защиты соответствует биту 63 дескриптора каталога страниц (Page Directory Entry) или дескриптора страницы PTE (Page Table Entry) и доступен только в случае использования 64-битной трансляции страниц, когда размер дескриптора составляет 64 бита.
Использование NX в среде 32-битной ОС возможно только при условии активности режима PAE (Physical Address Extension), что позволяет совместить 32-битную базовую архитектуру и 64-битный механизм виртуальной адресации. Заметим, в 64-битной ОС режим PAE обязателен.
Попытка выполнения инструкции, хранящейся в странице, дескриптор которой содержит установленный бит NX, приводит к генерации исключения процессором и аппаратной передаче управления привилегированному коду ОС для выяснения причин. Данный механизм классифицируется как аппаратный вариант реализации технологии DEP или Data Execution Prevention.
Неочевидные особенности
Внимательный читатель мог заметить, что в информации CPUID некоторые биты, соответствующие технологиям, которые данный процессор поддерживает, обнулены. Например, MMX, бит EDX.23. В силу исторических причин, функция 80000001h (extended cpuid) резервировалась для возможностей, добавляемых по инициативе «альтернативных» с точки зрения Intel производителей, в частности AMD. Поддержку MMX для Intel следует проверять по состоянию бита EDX.23 после выполнения функции 00000001h (standard cpuid).
Для возможностей, появившихся на раннем этапе развития архитектуры AMD64, основным источником информации является функция 80000001h. Здесь, как известно, лидерство принадлежит AMD.
Практические рекомендации
В рассмотренном случае процессор официально несовместим с Windows 10 в силу аппаратных причин, хотя вопрос поиска обходных путей не закрыт. Вместе с тем, получив аналогичное сообщение об ошибке на более современной платформе, следует проверить установки CMOS Setup, так как доступность технологии NX может зависеть от инициализации процессора процедурами firmware.

Рис 4. Опция PAE/NX в установках Oracle VirtualBox
А конфигурируя виртуальные машины, нелишним будет проинспектировать установки гипервизора...