Сравнение процессоров различных архитектур невозможно выполнить при прочих равных условиях, так как в поле зрения попадает не только аппаратная реализация чипов, но и программная инфраструктура, нередко обремененная бизнес-факторами и сложившимися, далеко не всегда позитивными традициями написания кода. Да и не нужно такое сравнение потребителю, имеющему дело с реальными, а не абстрактными платформами.
Анализируя результаты своеобразного баттла между процессорами M1 Mac и Intel Xeon W, показавшего преимущества гибридных процессоров в свете критериев QoS (Quality of Service), отметим еще один фактор производительности, характерный для платформ Apple M1 — механизм, позволяющий разработчику приложения явным образом декларировать характер нагрузки и желаемый уровень приоритета выполнения.
QoS средствами Intel RDT
Вспомним об одном из консервативных подходов к обеспечению QoS, реализованному задолго до появления гибридных процессоров Apple. Речь идет о подсистеме Resource Director Technology (RDT), разработанной компанией Intel. Она готова предоставить аппаратную поддержку управления приоритетами процессов в многозадачной среде и входит в состав всех современных CPU.
Resource Director Technology состоит из двух составляющих:
- Подсистема Intel RDT Monitoring ответственна за мониторинг использования приложениями системных ресурсов (с получением численных метрик, доступных операционной системе).
- Подсистема Intel RDT Allocation — своеобразный исполнительный механизм, позволяющий ОС нормировать выделение ресурсов, аппаратно ограничивая аппетиты конкурирующих задач.
В текущих реализациях RDT одним из главных управляемых ресурсов является кэш-память третьего уровня. Возможности подсистемы декларируются функциями CPUID с номерами 0Fh и 10h, поддержка которых типична для современных процессоров Intel и AMD, что позволяет считать данную функциональность унифицированной. Вместе с тем, адаптивная модель управления, основанная на метриках, предоставляемых подсистемой Performance Monitoring, неизбежно обладает латентностью, ведь система сначала должна набрать статистику доступа процесса X к ресурсу Y и только затем принять решение о коррекции схемы приоритетов.
Uncore Performance Monitoring
Подсистема Uncore Performance Monitoring, архитектура которой недавно была детально документирована, позволяет получать программно-доступные метрики для потоков данных на шинах ввода-вывода, в том числе, контролировать обмен информацией между периферийными устройствами, происходящий без участия CPU (так называемый, peer-to-peer traffic). Однако про унификацию данной подсистемы даже для нескольких моделей CPU одного вендора, а также о ее применении вне серверного сегмента, пока говорить рано. Ее, в первую очередь, можно классифицировать как инструмент, используемый в составе среды разработки приложений, а не механизм оптимизации выполнения их runtime-кода.
Декларирование нагрузки
Альтернативный вариант реализации QoS, основанный компанией Apple на явном декларировании приложением характера нагрузки и желаемого уровня приоритета, позволяет ОС выработать оптимальную стратегию выделения ресурсов непосредственно при старте приложения. Согласно цитате из материала, ссылка на который приведена в начале статьи:
Apple provides four QoS levels, and a fifth which leaves it up to macOS to decide. When writing the code, the developer uses names for the levels of QoS, ranging from background (lowest) to userInteractive (highest).
Подход, реализованный разработчиками macOS, особенно актуален для гибридных процессорных архитектур, так как позволяет оптимизировать выбор типа ядер для запуска приложения или его компонентов: энергоэффективные или производительные.

Впрочем, оптимизация, основанная на явном декларировании характера нагрузки, принесет плоды лишь в том случае, если разработчик приложения корректно выполнит такое декларирование, грамотно учитывая особенности аппаратной платформы и ОС, и, что немаловажно, обеспечит своевременное обновление своего продукта в соответствии с неизбежным расширением набора критериев и появлением новых механизмов повышения производительности и энергоэффективности.
Что в очередной раз не так с PC?
Разумеется, механизмы управления приоритетами выполняемых потоков есть и в мире PC-платформ. От простейшей функции до более сложных API, описание которых заслуживает отдельного материала. Но несмотря на это, готовность существующей программной инфраструктуры к появлению гибридных x86/x64 процессоров вызывает вопросы. Чтобы понять в чем проблема, давайте рассмотрим следующий пример.
Приложение, желающее воспользоваться некоторой опционально присутствующей технологией, например, AVX512, проверяет ее наличие выполняя инструкцию CPUID. Допустим, наша гибридная платформа, содержит энергоэффективные ядра, не поддерживающие AVX512 и производительные ядра, поддерживающие этот векторный набор инструкций.
Сложившиеся традиции проектирования кода для x86/x64 основаны на допущении, что все логические процессоры платформы поддерживают одинаковый набор функциональных расширений. Поэтому, выполнив CPUID в главном потоке и убедившись в наличии AVX512, приложение вправе запустить несколько параллельно работающих потоков, использующих это функциональное расширение на нескольких логических процессорах без дополнительных проверок каждого из них. Поскольку в нашем примере часть ядер не поддерживает AVX512, потоки, которым «не повезло», вызовут исключение и завершатся аварийно.
Заметим, что возможна и обратная ситуация, когда главный поток, запустившись на энергоэффективном ядре, никогда не узнает о наличии поддержки AVX512 у производительных ядер. Здесь результатом станет только снижение производительности.
Найти изящное решение, позволяющее совместить преимущества гибридной архитектуры и полноту набора функциональных расширений x86, без редизайна программных интерфейсов достаточно сложно.
Резюме
Возможно, затруднения, связанные с внедрением гибридных процессорных архитектур принесут некоторое тактическое преимущество Apple, сосредоточившей разработку аппаратного обеспечения и операционной системы в собственных руках и практикующей иные подходы, как в организационном так и в техническом плане. Поддержка гибридных процессорных архитектур, призванных обеспечить оптимальный баланс производительности и энергоэффективности требует пересмотра модели кооперации разработчиков процессора, операционной системы и приложений.
А PC-платформа, в очередной раз принеся в жертву фактор технической эстетики, уже готовит обходные пути, основанные на блокировке части ядер или части функциональных расширений.
Послесловие
Результат, полученный приложением грамотно оптимизированным для процессоров M1 Mac, интересен с исследовательской точки зрения, но не может рассматриваться как абсолютный показатель соотношения сил протестированных чипов.