Piton Processor: децентрализация в действии

27 Авг 2016

Piton Processor: децентрализация в действии

Есть мнение, что для будущих вычислительных систем, главными фак­то­рами производительности станут количество вычислительных ядер и технологии параллельного программирования, вытесняя на второй план производительность в пересчете на одно ядро. Недавно пред­став­лен­ный Piton Manycore Processor стал очередным аргументом в пользу такого прогноза.

Вкратце, 25 вычислительных ядер, построенных на основе 64-битной архитектуры SPARC, работают на частоте 1GHz, питаясь от напряжения 0.9 вольта. Любопытно другое: в презентации упоминается харак­те­рис­ти­ка «500 million cores per system».

Отладочный стенд для многопроцессорной Piton-системы
Рис 1. Отладочный стенд для многопроцессорной Piton-системы

О проблеме: NoC против SMP

Реализация заявленного уровня масштабируемости, потребует принципиально иных подходов, одним из которых является технология NoC (Network on Chip).

В чем же недостатки традиционных PC-систем от Intel и AMD?

  1. Конкурентный доступ всех ядер к совместно используемым ресурсам, в частности кэш-памяти последнего уровня (LLC=Last Level Cache), а также общим шинам передачи информации, нагрузка на которые пропорциональна количеству ядер, ограничивает масштабируемость и суммарную производительность группы ядер.
  2. Напомним, что SMP-система называется симметричной (Symmetric Multiprocessing) не только потому, что все ее процессоры одинаковые, но и в силу симметричного доступа каждого процессора к адресному пространству. Каждый CPU в любой момент времени «видит» одинаковое содержимое ячеек памяти и портов ввода-вывода, несмотря на наличие локальной кэш-памяти у каждого ядра и/или группы ядер. Для синхронизации содержимого кэш, требуется так называемый snoop traffic, это поток информации о доступе всех процессоров к совместно используемым данным, обеспечивающий реализацию протокола MESI (Modified, Exclusive, Shared, Invalid), названного в соответствии с четырьмя возможными состояниями ячейки кэш-памяти.

С ростом количества ядер, объем такого трафика возрастает, что неизбежно снижает производительность.

Примечание.

Исключением из описанной симметрии являются регистры локального контроллера прерываний Local APIC (Advanced Programmable Interrupt Controller), который является собственным адресуемым объектом для каждого из логических процессоров.

Аспект когерентности в первую очередь касается оперативной памяти, так как она является основным кэшируемым ресурсом, влияющим на производительность.

О решении: кластеризация становится адаптивной

Описанные проблемы классических x86-платформ, частично нивелируются технологией Intel CoD (Cluster on Die), собственный подход к кластеризации заявила и AMD, но если речь о стремительном росте количества ядер на несколько порядков, становится очевидной необходимость принципиально иных топологических решений.

В частности, кластеризация в x86 процессорах является статической. Кластеры как группы ядер и топология их соединения, определены при разработке процессора и не могут быть изменены. Даже когда мы выключаем CoD в CMOS Setup, мультипроцессорная топология не изменяется, отключается только ее декларирование в таблицах интерфейса ACPI.

Иерархическая структура мультипроцессорной системы, созданной на основе NoC: для соединения ядер внутри 25-ядерных чипов, а также соединения чипов в составе системы, используется топология в виде решетки (grid)
Рис 2. Иерархическая структура мультипроцессорной системы, созданной на основе NoC:
д
ля соединения ядер внутри 25-ядерных чипов, а также соединения чипов в составе системы,
используется топология в виде решетки (
grid); отметим сходство методов соединения ядер и чипов

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

Домены когерентности создаются и удаляются динамически, в соответствии с характером нагрузки, это определяет уровень адаптивности системы
Рис 3. Домены когерентности создаются и удаляются динамически, в соответствии с характером нагрузки,
это определяет уровень адаптивности системы (левый рисунок);
в основе параллелизма, по-прежнему локальная кэш-память (правый рисунок)

Важным понятием для любой мультипроцессорной платформы, является домен когерентности (Coherency Domain). Так называется фрагмент системной топологии (фактически, группа ядер), внутри которой гарантируется однородность данных.

Поясним, что это означает. Допустим, несколько логических процессоров, адресуя некоторые данные, получили собственные копии этих данных в своей локальной кэш-памяти, с целью ускорения доступа к ним. Теперь каждый из программных потоков работает со своей отдельной копией данных, поэтому, запись выполненная одним потоком, останется незамеченной другими. Чтобы этой неприятности не произошло, требуется синхронизация данных, в частности упомянутый snoop traffic.

Если доменом когерентности является вся вычислительная система, что типично для PC-платформ, то для обеспечения согласованности данных, каждому процессору нужно передать информацию о действиях всех остальных процессоров. При таком подходе, объем информации snoop traffic, курсирующей между вычислительными модулями, неизбежно повышается с ростом количества ядер, что приводит к потере производительности.

Важный комментарий на Рис 3 (Domains are created and modified at runtime) поясняет, что в «новой» системе границы доменов можно определять динамически, в соответствии с группировкой ядер по выполняемым задачам. В основе автономности, по-прежнему локальная кэш-память, но snoop traffic курсирует только там, где это действительно необходимо. Принципиально то, что каждая вычислительная задача, использующая в среднем около 2-6 ядер, освобождена от необходимости участия в механизмах координации работы всех десятков тысяч ядер такой системы.

Резюме

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

Стенд разработчика Piton-системы
Рис 4. Стенд разработчика Piton-системы

Словосочетание «процессор с открытым исходным кодом», ставшее популярным в последнее время, заставляет задуматься о том, что фундаментальному пересмотру подвергается не только мультипроцессорная топология, но и сама организация процесса разработки аппаратных средств. «Идеологически близкие» конкуренты в лице ARM-систем, также дают о себе знать.

Вместе с тем, пытаясь рассматривать подобные решения в качестве серьезного конкурента для архитектуры x86, следует запастись здоровым скепсисом. Ведь переписать или адаптировать огромный массив существующего программного обеспечения PC-платформы, для процессора, отличного не только по кодированию инструкций, но и идеологии получения производительности, абсолютно нереально. Совсем другое дело — центры обработки данных, аппаратное и программное обеспечение которых проектируется «с нуля». Здесь NoC может стать практически идеальным решением.

В заключение хочется процитировать Дэвида Венцлаффа (David Wentzlaff) – одного из участников группы разработки принстонского проекта Piton:

«Мы очень довольны полученными результатами, ведь в академической среде ресурсов существенно меньше, чем у бизнеса, занятого производством чипов на коммерческой основе. Мы также рады предоставить IT-сообществу наш дизайн как проект с открытым исходным кодом. Это не удивительно, когда речь идет о программном обеспечении, но почти никогда не встречается в разработке аппаратных средств».

Коллективное фото команды разработчиков из Принстонского университета