Стремительное увеличение количества вычислительных ядер, а также перенос ряда экстремальных решений, ранее характерных только для специализированных сопроцессоров-ускорителей Xeon Phi в мир центральных процессоров, потребовали радикальных изменений в архитектуре низкоуровневого программного обеспечения. Подтверждением тому анонс продукта от Insyde Software для масштабируемых систем. Проанализируем ключевые свойства вычислительных платформ на основе Intel Xeon Scalable Processors, а также Intel Bootable Xeon Phi Processors, потребовавшие модернизации firmware. В центре внимания технологии Fabric on package и Memory on package, в том числе связанные с ними системные объекты UEFI и ACPI.
Два вида firmware
Сегодня многие системные платы оборудованы дополнительным процессором-микроконтроллером Board Management Controller (BMC) выполняющим собственное встроенное программное обеспечение.
Контроллер способен функционировать в режиме «дежурного питания» при отключенном центральном процессоре, реализуя ряд сервисных функций. Этот факт нашел свое отражение в структуре низкоуровневого программного обеспечения Insyde Software. Разработка представлена в виде двух обособленных модулей: несколько старомодным термином BIOS обозначено UEFI firmware, исполняемое центральным процессором, в свою очередь System Management Firmware включает программное обеспечение для BMC.
Mesh: топология на основе ячеек
Одним из интересных решений Intel Xeon Scalable Processors является интерконнект вычислительных ядер на основе сети ячеек 2D mesh.
Рис 1. Блок-схема центрального процессора на основе mesh-топологии
(эта и три последующие иллюстрации из документа Knights Landing Intel Xeon Phi CPU:
Path to Parallelism with General Purpose Programming, Avinash Sodani)
Отметим, что каждая ячейка сети (Рис 1), определяемая термином Tile, может содержать более одного процессорного ядра, в типовом случае два. Допускается разделение сети на кластеры, вместе с тем, принцип такого разделения на основе технологии Fabric on package существенно отличается от топологии Cluster-on-Die и заслуживает отдельной статьи.
Multi-Channel DRAM
Массив, содержащий десятки, а в перспективе и сотни вычислительных ядер требует интенсивного обмена с оперативной памятью. Задача решается совместным применением двух компонентов:
- Классическая DRAM-подсистема включает до шести каналов оперативной памяти, реализованных в виде двух контроллеров Integrated Memory Controller (IMC), каждый из которых в типовом случае может содержать до трех каналов.
- Опционально присутствующая подсистема Multi-Channel DRAM (MCDRAM или Memory on package), физически реализована в виде микросборок в корпусе CPU. В конфигурации, показанной на Рис 1, процессор снабжен восемью каналами MCDRAM общим объемом до 16 гигабайт. Количество каналов и высокие рабочие частоты, обусловленные размещением компонентов в корпусе CPU, обеспечивают трафик, необходимый для эффективной работы данного количества вычислительных ядер.
Характеристики MCDRAM
Согласно оценке, приведенной в документе для процессоров класса Intel Xeon Phi (Knights Landing), пропускная способность восьмиканальной подсистемы MCDRAM составляет около 450 гигабайт в секунду. Для сравнения, классический шестиканальный DRAM-контроллер в составе того же процессора обеспечивает около 90 гигабайт в секунду.
Режимы работы MCDRAM
Выбор метода применения MCDRAM находится под контролем UEFI firmware. Рассмотрим доступные опции.
Рис 2. Использование интегрированной памяти MCDRAM в качестве дополнительной кэш-памяти без прямого включения в адресное пространство
Режим Cache Mode (Рис 2) позволяет использовать MCDRAM в качестве дополнительного уровня кэширования. При этом минимизирована роль программного обеспечения в оптимизации производительности. Аппаратно реализованный кэш-контроллер ведет статистику обращений к основной оперативной памяти и обеспечивает поддержание в быстродействующем буфере (каковым является MCDRAM) той информации, с которой в данный момент времени интенсивно работает процессор. В этом режиме, в соответствии с канонами функционирования кэш-памяти, за MCDRAM не закреплен диапазон физического адресного пространства.
Рис 3. Включение интегрированной памяти MCDRAM в адресное пространство
Flat Mode (Рис 3) антагонистичен по отношению к выше рассмотренному Cache Mode. В этом режиме, в адресном пространстве выделяется диапазон, закрепленный за подсистемой (подсистемами) MCDRAM а забота о том, чтобы информация, критичная с точки зрения производительности располагалась в быстродействующих блоках, возлагается на программное обеспечение. Очевидно, ОС и приложения, обладая «стратегическими» знаниями об использовании памяти способны выполнить оптимизацию более эффективно, в то время как аппаратный кэш-контроллер, оперируя статистикой обращений к ОЗУ, действует исключительно «тактически». В то же время, такая модель требует явной поддержки со стороны программного обеспечения, в том числе UEFI, о чем пойдет речь ниже.
Рис 4. Гибридное применение интегрированной памяти MCDRAM
Hybrid Mode (Рис 4) как видно из диаграммы, совмещает оба выше описанных режима, разделяя ресурсы MCDRAM на две части, используемые для аппаратно-управляемого кэша (Cache Mode) и программно-управляемого быстродействующего ОЗУ (Flat Mode).
Детально о роли UEFI
Рассмотрим системные объекты, необходимые для коммуникации между UEFI и ОС. В центре внимания две задачи, решаемые в рамках интерфейса ACPI:
1) NUMA-топология.
Проблематике NUMA в контексте PC-совместимых систем уже более десятилетия, но для полноты изложения, напомним суть вопроса. С момента интеграции контроллера оперативной памяти в состав CPU, платформа, располагающая несколькими физическими процессорами, содержит такое же количество подсистем DRAM. При этом, протяженность маршрута от инициатора доступа к памяти (процессорного ядра) до исполнителя (подсистемы DRAM) зависит от их топологического расположения. Для оптимизации работы программного обеспечения, особенности таких платформ декларируются с помощью ACPI-таблиц System Resource Affinity Table (SRAT), перечисляющей домены вычислительных ядер и блоков памяти а также System Locality Distance Information Table (SLIT), содержащей числовые значения, пропорциональные топологическим дистанциям.
2) MCDRAM или многоканальная оперативная память в составе процессора.
Размещение MCDRAM в адресном пространстве обеспечивает ряд новых возможностей для оптимизации ПО. Решение очевидно — если в системе имеется несколько видов DRAM, обладающих различным быстродействием, то интенсивно используемую информацию следует располагать в высокопроизводительной памяти.
Рис 5. Принцип декларирования топологии платформы, использующей несколько NUMA-узлов с неоднородным доступом к памяти а также несколько видов оперативной памяти, имеющих различную производительность (из документа Advanced Configuration and Power Interface Specification. Version 6.2)
Чтобы реализовать такой подход, от UEFI к операционной системе необходимо передать таблицу, перечисляющую доступные блоки памяти и скоростные свойства каждого из них: пропускная способность при передаче непрерывного блока, выражаемая в мегабайтах в секунду, латентность доступа или задержка при обращении, выражаемая в наносекундах а также ряд атрибутов, связанных с участием кэш-памяти в операциях.
Что нового в firmware?
Декларация перечисленных свойств, ассоциированных с диапазонами физического адресного пространства вычислительной платформы, осуществляется посредством специального системного объекта — ACPI-таблицы Heterogeneous Memory Attribute Table (HMAT), определение которой впервые появилось в спецификации ACPI 6.2, увидевшей свет в мае этого года.