История с гибридным сценарием началась не сегодня: в ее основе лежит предложенная ARM архитектура big.LITTLE. Одним из известных вариантов реализации такой идеи стал симбиоз мощных, но «прожорливых» и быстрых, но «экономных» ядер, формирующих профиль платформы Apple M1. Похожую траекторию избрала для себя и компания Intel, продвигая семейство процессоров 12-го поколения под кодовым названием Alder Lake. Куда вывела кривая, разбираемся, листая экспертные мнения и первоисточники.
Архитектура Alder Lake представляет собой гибридный дизайн процессорного чипа с двумя различными типами ядер: «P» — для производительности и «E» — для эффективности. Ядра «P» основаны на микроархитектуре Golden Cove, а «E» используют Gracemont, ранее применявшуюся только в маломощных процессорах семейства Atom.
«Из яйца» процессоры Alder Lake вылупились с различной идентификацией CPUID для ядер «P» и «E», что иногда вызывало проблемы: программное обеспечение не предполагает различные типы ядер в составе одного чипа. В дальнейшем, благодаря обновлению микрокода, ситуация немного улучшилась — инструкция CPUID рапортует о процессорах Alder Lake, возвращая сигнатуру, одинаковую для всех ядер. Один из вариантов соответствует Family=6, Model=97h (00090672h). Чтобы сохранить возможность распознавания ядер «P» и «E», в CPUID добавлена специальная функция с номером 0000001Ah.

Однородность требует жертв!
CPUID — это не просто полезный информатор, это две-три, а точнее — десятки страниц убористых наставлений о том, какой код можно «скормить» данному процессору, а что ему не по зубам. В этом свете гибридный дизайн фактически приносит в жертву поддержку новейшего расширения процессорных инструкций в угоду совместимости. Те из них, которые не поддерживаются обеими архитектурами, попадают в «прокрустово ложе» новации — возможности P-ядер, отсутствующие в группе «E», отключаются при инициализации платформы. Иначе миграция выполняющегося потока с производительной подсистемы на энергоэффективную приведет к ошибке из-за использования не поддерживаемого набора инструкций. А все потому, что обе микроархитектуры из состава Alder Lake оснащены по-разному: Golden Cove поддерживает расширения AVX512, в то время как Gracemont ограничивается только AVX2-инструкциями.
В силу сказанного, отключение энергоэффективных ядер дает возможность разблокировать поддержку AVX512 в производительных ядрах. Вместе с тем, Intel официально не рекомендует включать AVX512 у Alder Lake, и этот запрет имплементирован в микрокоде процессоров 12-го поколения.
Что позволено ASUS — доступно всем
Энтузиастами особо ценятся системные платы, обходящие этот запрет. В настоящее время настройка гибридности доступна в UEFI платформ ASUS и ASRock. Именно там есть возможность включать AVX512 для Alder Lake.
Если не терпится повозиться с платформами, не допускающими разблокировку AVX512, стоит найти модуль UEFI, изменяющий содержимое Model Specific регистра 0x000000AF. По информации ряда экспериментаторов, это недокументированный MSR для манипуляций с векторными расширениями, нулевой бит которого предназначен для отключения функций AVX2 и AVX-512, бит #1 — для отключения AVX-512. Итак, если содержимое битов [1,0] MSR 0xAF равно 10b, это означает, что отключены только инструкции класса AVX-512.
По идее, эта функциональность должна в ближайшем будущем исчезнуть — свежие обновления жестко «залочат» архитектурную неоднородность программных моделей. Если блокировка AVX2 и AVX-512 упрется в загружаемый из UEFI микрокод процессоров, шансы распрощаться с гримасами гибридности отодвинутся на неопределенное время.