Топология Cluster-on-Die

14 Дек 2014

Топология Cluster-on-Die

В архитектуре процессоров Intel Xeon E5 v3 впервые реализована топология Cluster-on-Die, используемая для кристаллов с количеством ядер более 10, которая разделяет ресурсы CPU на две группы, на­зы­ва­е­мых кластерами.

Каждый кластер содержит набор ядер, связанных кольцевой шиной или ring bus. Две кольцевые шины взаимодействуют через ком­му­та­то­ры buffered switch, обеспечивая обмен информацией между кластерами.

Оптимизатору на заметку

Очевидно, при доступе к локальным ресурсам кластера (например, блоку общей кэш-памяти третьего уровня) латентность ниже, чем при обращении к ресурсам соседнего кластера. Хотя с точки зрения программной модели, каждый адресуемый ресурс доступен каждому вычислительному ядру и в этом смысле такая система симметрична.

Архитектура процессорного ядра Intel Xeon E5-2670 v3
Рис 1Архитектура процессорного ядра Intel Xeon E5-2670 v3

Другая особенность процессоров, располагающих четырьмя каналами оперативной памяти, особенно важна для специалистов в области высоконагруженных систем, а также их коллег – разработчиков утилит, измеряющих производительность. Существует два варианта топологии таких процессоров:

  1. Один четырехканальный контроллер оперативной памяти, равноудаленный от всех ядер.
  2. Два двухканальных контроллера, по одному на группу ядер.

Во втором варианте, программа, использующая один поток, либо несколько потоков, но запущенных на вычислительных ядрах, относящихся к одному кластеру, не сможет получить скорость доступа к оперативной памяти, превышающую возможности двух (но не четырех имеющихся!) каналов:

Резкое падение скорости при включении опции Cluster-on-Die в сочетании с режимом активного использования только одного процессорного кластера
Рис 2Резкое падение скорости при включении опции Cluster-on-Die в сочетании с режимом активного использования только одного процессорного кластера. В этом случае все программные потоки задействуют только половину ресурсов процессора. Платформа S2600WT с двумя 12-ядерными процессорами Intel Xeon E5-2670 v3 частотой 2,3 ГГц

NUMA

Реализация топологии NUMA (Non-Uniform Memory Access) в современных мультипроцессорных системах предполагает наличие нескольких процессоров, каждый из которых снабжен собственным контроллером памяти. Доступ к локальному контроллеру осуществляется быстрее, чем к памяти соседнего процессора. Для оптимизации программного обеспечения с учетом такой особенности платформ, Firmware передает топологическую информацию операционной системе посредством интерфейса ACPI. Примечательно, что декларирование топологии Cluster-on-Die осуществляется с помощью тех же системных объектов ACPI. Рассмотрим подробнее, как это происходит.

Как Firmware передает топологическую информацию операционной системе

Если опцию Cluster-on-Die в CMOS Setup платформы, установить в состояние ENABLED, каждый кластер декларируется как отдельный NUMA-узел, соответственно, количество узлов становится в два раза больше количества процессорных сокетов. При этом информация об особенностях кластерной архитектуры процессора декларируются и может быть использована для оптимизации программного обеспечения.

Декларирование кластеров, также как и топологии мультипроцессорных NUMA-систем с целью передачи информации от BIOS платформы к операционной системе и оптимизации использования локальных ресурсов кластера, осуществляется посредством ACPI-таблицы SRAT (System Resource Affinity Table, или, по другой версии Static Resource Affinity Table). Таблица состоит из элементов двух типов: Processor Affinity Structures, определяющих принадлежность логических процессоров к заданным NUMA-узлам (называемым Proximity Domains) и Memory Affinity Structures, определяющих приближенность ресурсов оперативной памяти к указанным узлам. Таким образом, каждый диапазон памяти ассоциируется со своей группой логических процессоров. 

Заметим, что NUMA-иерархия стала двухуровневой: нижний уровень – кластеры, верхний уровень – процессорные сокеты. На каждый сокет декларируется два NUMA-узла. Это означает, что параметр, характеризующий расстояние между узлами в мультипроцессорной NUMA-системе, может принимать более двух значений (не только локальный или удаленный узел). Для описания такой системы потребуется еще одна ACPI-таблица SLIT (System Locality Distance Information Table). Эта таблица содержит матрицу размерностью N x N, где N = количество NUMA-узлов. Элементы матрицы Xij содержат константы, численно характеризующие расстояние между узлами i, j.

Резюме

Вполне закономерно, что после достижения количеством ядер в процессоре определенного порога, разумным решением стало разделение процессора на кластеры. Такие, казалось бы, общие ресурсы, как кэш третьего уровня и контроллер оперативной памяти, также были разделены на блоки. Каждый такой блок ассоциирован со своим кластером. Системная топология декларируется для программного обеспечения посредством интерфейса ACPI и процедур NUMA API, имеющихся во всех современных операционных системах. Главное правило при оптимизации программного обеспечения – доступ процессора к «своей» памяти предпочтительнее, так как он осуществляется быстрее, чем к «чужой».

Теги: