
Мнения о близком завершении эпохи x86, объективно обусловленные ограничениями PC-платформ, высказывались еще в 16-битные времена MS-DOS. Надо признать, компьютерная индустрия оказалась в ловушке: отказ от традиционной архитектуры невозможен в силу наличия огромного накопленного массива программного обеспечения, в то время как идеология ПК, выработанная около четырех десятков лет назад, безнадежно устарела. Что делать? Предстоит эволюция по плану Intel или революция от NVidia? Либо мы просто не заметили, как CPU уже утратили x86-совместимость?
О терминологии
Аргументом Intel в конкурентной борьбе с NVidia на поле высокопроизводительных распределенных вычислений, является разработка и развитие архитектур с большим количеством ядер, объединяемых 2D-mesh интерконнектом. Несмотря на множество нововведений, ранее не характерных для центральных процессоров PC, в контексте сегодняшнего рассмотрения определим этот путь как эволюционный, в силу дальнейшего использования набора инструкций x86, с постепенным удалением из него элементов наиболее одиозных с точки зрения производительности и энергоэффективности.
Наступление «Эпохи NVidia», предрекаемое в статье, ссылка на которую приведена в преамбуле, классифицируем как революционный путь. Попытаемся поспорить с автором публикации, рассмотрев аргументы в пользу эволюционного сценария от Intel.
Intel Xeon Phi: акцент на количество ядер
Процессор Xeon Phi, как сопроцессор-ускоритель в PCI Express-исполнении, архитектурно, схемотехнически и конструктивно напоминает видеоадаптер: от программной модели до импульсных регуляторов напряжения в цепях питания центральной микросхемы и локальной памяти. Сокетные реализации Bootable Xeon Phi, обеспечили ему статус центрального. Несмотря на утраченное при этом внешнее сходство с видеоадаптерами, внутренняя GPU-подобная архитектура сохранена, включая локальную оперативную память MCDRAM (Multi-Channel DRAM). Тем не менее, фактор x86, как препятствие для роста производительности и энергоэффективности, сохраняется в архитектуре Intel, что ослабляет позиции компании в конкуренции с NVidia.
Рис 1. Процессор Xeom Phi в новом конструктиве
Известно два фактора производительности компьютерных систем: мощность вычислителей и их число.
С одной стороны, большое количество ядер в сочетании с оптимизацией методов взаимодействия между ними, могут нивелировать ограничения отдельно взятого ядра, в частности недостаточный уровень «однопотоковой» производительности. Вместе с тем, усложнения, обусловленные требованиями совместимости, необходимость поддержки множества Legacy-ресурсов и редко используемых инструкций, является одним из главных факторов, ограничивающих число ядер на кристалле и приводящих к серьезному разрыву между x86 CPU и GPU по этому параметру.
Чем сложнее базовый вычислительный модуль и чем больше его энергопотребление, тем меньше таких модулей можно реализовать в заданной конструктивной единице, хотя прямое сравнение количества ядер центральных и графических процессоров не всегда уместно.
Итак, ядро x86 требуется привести к виду, оптимальному для построения сети из десятков и сотен вычислителей на его основе. Решение оптимизационной задачи с учетом имеющихся ограничений потребует принесения в жертву не используемых или редко используемых x86-инструкций и операционных режимов, наличие которых было обусловлено требованиями совместимости. А это значит, что процесс расширения системы x86-команд пошел в обратном направлении. Однако, не будем преувеличивать эксклюзивность момента. Более десяти лет назад, при реализации архитектуры AMD64 уже были исключены инструкции десятичной коррекции.
Intel отказывается от x86, но делает это постепенно
В силу причин, рассмотренных выше, в архитектуре процессоров Intel Xeon Phi с момента их появления наметилась тенденция к отказу от некоторых атрибутов x86. Рассмотрим фрагмент документа Intel Xeon Phi Coprocessor System Software Developers Guide, (Рис 2) ниже перечислены некоторые из элементов x86-архитектуры, ушедшие в прошлое.
Рис. 2 Перечисление элементов x86-функциональности, поддержка которых прекращена в Intel Xeon Phi
(в новом окне открывается фрагмент Intel Xeon Phi Coprocessor System Software Developers Guide)
- Инструкции условной пересылки операндов: Conditional Movs.
- Инструкции для работы с портами ввода-вывода IN, OUT и их производные для строкового ввода-вывода; вместо этого используется ввод-вывод, отображаемый на память (MMIO или memory-mapped IO).
- Инструкции ускоренного вызова и возврата для подпрограмм операционной системы: SYSENTER, SYSEXIT, в частности, поддержка системных вызовов в 32-битном контексте.
- Технология MMX и некоторые элементы x87/SSE/AVX, в частности используемые для операндов разрядностью менее 512 бит; аппаратное сохранение и восстановление контекста при переключении задач.
Про анатомию конфликта
Сравнение программного и аппаратного обслуживания контекста показательно при компромиссе производительности, энергоэффективности и совместимости. Напомним, что при переключении задачи, регистры процессора, определяющие контекст прерываемой задачи должны быть сохранены в специальной области памяти, — устаревший термин Task State Segment, — для последующего возобновления ее выполнения. Затем, контекст прерывающей задачи загружается из оперативной памяти в регистры процессора для ее запуска. Более простой пример — использование стека для сохранения и восстановления состояния при вызове подпрограммы и возврате из нее.
- Аппаратная реализация предполагает автоматическое сохранение и восстановление всех регистров без использования дополнительных машинных инструкций загрузки и сохранения каждого регистра.
- Программная реализация, напротив требует явного задания инструкции передачи данных между регистром и памятью для каждого из регистров.
Если подпрограмма достаточно сложная и изменяет содержимое всех регистров процессора, то аппаратная реализация, принятая в большинстве современных x86-платформ, является оптимальным решением. Если подпрограмма простейшая и требует для своего выполнения двух-трех регистров, то автоматически инициируемое полное сохранение и восстановление контекста приводит к необоснованному расходу процессорных тактов и энергии.
Рис 3. Диаграмма выполнения межсегментной передачи управления с переключением задачи — целевой сегмент адресуется вентилем задачи (Task gate), загрузка контекста выполняется из сегмента состояния задачи (TSS)
В соответствии с канонами архитектуры x86, если при межсегментной передаче управления дескриптор целевого сегмента является вентилем задачи (Task gate), инициируется переключение с загрузкой контекста из TSS. Алгоритм, впервые реализованный в 16-битном варианте для процессора 80286, получил развитие в 32-битных системах. В наборе команд AMD64 данный вид аппаратной поддержки многозадачности был существенно сокращен. Позднее был разработан механизм на основе инструкций XSAVE/XRSTOR, описание которого можно найти в «Заметках по анатомии многозадачной ОС».
Такова анатомия одной из многочисленных причин, в силу которых x86-системы иногда обвиняют в выполнении «лишней работы». С учетом того, что количество векторных регистров в процессорах с поддержкой AVX512 достигло 32 (ZMM0-ZMM31) на каждый логический CPU, ликвидация избыточных сохранений и загрузок действительно актуальна.
Криптовалюта vs обработка графики
К вычислительным сценариям, при которых основные операции выполняют графические процессоры, а CPU отведена роль устройства для перемещения данных с низким трафиком, безусловно можно отнести вычисление криптовалют.
Ограничения, присущие шинам ввода-вывода, не оказывают здесь существенного влияния на производительность, поскольку основное время занимают операции, выполняемые графическим процессором автономно, с использованием локальных операционных блоков и локальной памяти, без передачи данных по шине ввода-вывода между платой видеоадаптера и хост-платформой.
А потому, решения на основе интерфейса PCI Express с малой шириной шины (x1) популярны в данном сегменте.
Вместе с тем, не все алгоритмы могут быть разделены на блоки, допускающие длительную автономную обработку. При использовании видеоадаптеров «по прямому назначению» для графической визуализации, производительность центрального процессора и шины PCI Express ощутимо влияют на результат. Это означает, что эффективная децентрализация вычислений невозможна без радикальных изменений в шинной инфраструктуре платформы.
Резюме
В контексте обсуждения перспектив x86, показателен отказ от портов ввода-вывода. В отличие от остальных перечисленных выше атрибутов PC-совместимости, их наличие считается обязательным, а не опциональным, и потому не требует валидации с помощью CPUID. Точнее, не предусмотрено флагов для индикации наличия команд IN, OUT, поскольку они не опциональны, а обязательны для любого x86-процессора, еще со времен первых компьютеров IBM PC на основе Intel 8088.
С формальной точки зрения, процессор Intel Xeon Phi, лишенный хотя бы одного базового элемента x86-архитектуры, не является x86-совместимым. Впрочем, на сегодня это скорее казуистика, но тенденция показательна...