CPU и GPU в архитектуре вычислительных платформ: эволюция или революция

28 Июл 2017

Роль и место CPU и GPU в архитектуре вычислительных платформ: эволюция или революция

Мнения о близком завершении эпохи 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)

  1. Инструкции условной пересылки операндов: Conditional Movs.
  2. Инструкции для работы с портами ввода-вывода IN, OUT и их производные для строкового ввода-вывода; вместо этого используется ввод-вывод, отображаемый на память (MMIO или memory-mapped IO).
  3. Инструкции ускоренного вызова и возврата для подпрограмм операционной системы: SYSENTER, SYSEXIT, в частности, поддержка системных вызовов в 32-битном контексте.
  4. Технология 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-совместимым. Впрочем, на сегодня это скорее казуистика, но тен­ден­ция по­ка­за­тель­на...

Теги: