
Так сложилось, что понятие гетерогенные вычисления чаще ассоциируется с применением интегрированных и дискретных графических акселераторов компании AMD. Прямой конкурент, разумно распоряжаясь интеллектуальной собственностью ведущего разработчика программируемых логических матриц подготовил весьма достойный асимметричный ответ. Давайте поближе познакомимся с архитектурой гетерогенной мультипроцессорной системы на основе Intel Xeon и FPGA.
Классическая симметричная мультипроцессорная архитектура
SMP на протяжении последних десятилетий является основной технологией масштабирования вычислительных ресурсов, существуя на трех иерархических уровнях:
- Hyper-Threading, как выполнение одним вычислительным ядром нескольких (чаще всего двух) программных потоков.
- Multi-Core процессоры содержат в одном корпусе несколько вычислительных ядер, реализованных на одном или нескольких кристаллах. При этом, ядра в составе одного кристалла могут группироваться в кластеры.
- Multi-Socket платформы поддерживают несколько физических процессоров (процессорных гнезд).
Интеграция контроллера памяти в кристалл CPU превращает систему с несколькими физическими процессорами в платформу с неоднородным доступом к памяти (NUMA), поскольку каждый физический процессор оснащен своим контроллером памяти. В силу топологических причин время доступа к «своему» контроллеру памяти меньше, чем к «чужому», поскольку во втором случае маршрут передачи информации будет пролегать по шине межпроцессорной связи.
Несмотря на это обстоятельство, которое часто является причиной противопоставления понятий SMP и NUMA, с точки зрения программной модели и адресации системных ресурсов NUMA-платформа соответствует спецификации SMP, поскольку диапазоны памяти, соответствующие физически раздельным DRAM-контроллерам, сведены в единое адресное пространство, доступное для всех процессоров. Поэтому программный код, игнорирующий топологию NUMA, будет работоспособен, хотя и не достигнет оптимального быстродействия.
Новая асимметричная мультипроцессорная архитектура
SMP-модель, описанная в предыдущем разделе, упрощает разработку операционных систем, ведь если все вычислительные ресурсы одинаковы, алгоритм планирования нагрузки может «поручить» любую задачу любому процессору с опциональной поправкой на NUMA-оптимизацию. Очевидно, чтобы нарушить сложившуюся за десятилетия гармонию, реализовав асимметричную мультипроцессорную архитектуру, необходимы веские причины, и состоят они в ограничениях, присущих универсальным процессорам.
Неплохой иллюстрацией является задача генерации криптовалюты, для выполнения которой на первых порах использовались вычислительные ресурсы графических процессоров High-End видеоадаптеров, но затем ее реализация была делегирована специализированным устройствам. Диаграмма Рис 1. иллюстрирует пример построения гетерогенной асимметричной мультипроцессорной топологии на основе существующей Multi-Socket инфраструктуры.
Рис 1. Гетерогенная мультипроцессорная система на основе FPGA
Система построена на основе процессора Intel Xeon E5-2600 v2, располагающего четырьмя каналами оперативной памяти DDR3, несколькими шинами ввода-вывода PCI Express, и шиной связи с системной логикой DMI (Direct Media Interface).
Шина QPI (Quick Path Interconnect), традиционно задействованная для связи нескольких одинаковых процессоров, является каналом связи между CPU и специализированным вычислителем (сопроцессором), построенным на основе FPGA. Функциональность сопроцессора ограничена узким кругом задач, он не является универсальный процессором. Вместе с тем, «свои» задачи он способен выполнять значительно быстрее, чем CPU.
В этом примере (на сегодня уже несколько устаревшем) сопроцессор поддерживает два канала DDR3 и одну шину ввода-вывода PCI Express. Эти характеристики не являются константами, определяясь функциональным назначением сопроцессора и ограничиваясь стоимостью платформы. Наличие собственного контроллера памяти у сопроцессора позволяет классифицировать платформу как NUMA. Когерентность содержимого кэш-памяти процессоров и сопроцессоров поддерживается на аппаратном уровне, как и для одинаковых процессоров в рамках SMP-подключения.
Архитектура программной поддержки для систем, содержащих сопроцессоры, показанная на Рис 2 основывается на открытом языке программирования Open Computing Language.
Рис 2. Архитектура программной поддержки гетерогенной мультипроцессорной системы на основе FPGA
Сопроцессор, также как центральный процессор, располагает собственным механизмом виртуальной адресации, поэтому приложение (OpenCL Application) способно использовать ресурсы центральных и специализированных процессоров с максимально возможной степенью унификации.
Стек протоколов, абстрагированный от физической реализации платформы, подразумевает взаимодействие вычислительных модулей посредством общей памяти. Определение «общая память» здесь справедливо с точки зрения программной модели, в то время как обмен информацией между двумя NUMA-узлами через память неизбежно означает периодические обращения к DRAM-каналам другого узла. Количество таких транзакций разумно минимизировать для оптимизации производительности.
Вместо послесловия
На первый взгляд топология, рассмотренная на Рис 1, напоминает связку центрального процессора i8088 и арифметического сопроцессора i8087, реализованную несколько десятилетий назад в персональных компьютерах IBM PC/XT.
Вместе с тем, сопроцессор Intel 8087 не поддерживал собственного командного потока, детектируя свои инструкции в командном потоке центрального процессора Intel 8088/8086 и эксплуатируя его механизмы адресации памяти. Аналогия же с сопроцессором ввода-вывода Intel 8089, обладающим высокой степенью автономности, выглядит логичнее.
Вычислительный модуль на основе FPGA, несмотря на функциональную ограниченность, адресует инструкции и данные самостоятельно, в том числе располагая собственными подсистемами ввода-вывода и доступа к оперативной памяти. Такой узел имеет шансы повторить судьбу арифметических сопроцессоров 80x87, став впоследствии частью кристалла CPU.