Особенности математической поддержки гибридных сопроцессоров в ОС РВ QNX Neutrino

Данная статья посвящена актуальным вопросам технологической обеспеченности поддержки в ОС РВ QNX Neutrino последних научных достижений в области механизмов и моделей управления памятью и гибридных технологий. Авторами проводится анализ наиболее интересных подходов к решению поставленных задач, как в мировой практике, так и в контексте отечественной промышленности, демонстрируются имеющиеся достижения в данном направлении, а также раскрываются особенности их реализации.

Косик Игорь, Докучаев Андрей

139
В ЗАКЛАДКИ

Гибридные технологии уже достаточно давно и успешно проникают в различные сферы деятельности человека: автомобили с гибридными двигателями, гибридные велосипеды, гибридные операционные [1] и даже гибридные термоядерные реакторы [2]. Если же ограничиться рассмотрением вычислительной техники, то достаточно быстро становится очевидным, что и в этом направлении научной мысли гибридные концепции имеют порой незаметные, но весьма ощутимые проявления.

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

  • гибридные накопители, совмещающие в себе традиционные HDD и кэш-память, выполненную по технологии SSD;
  • гибридные ЦП с интегрированным графическим процессором (англ. Gra­phics Processing Unit, GPU), реализующие гетерогенно-однородный доступ к памяти (от англ. hetero­geneous Uniform Memory Access, hUMA [3]);
  • гибридные сигнальные процессоры и математические сопроцессоры, а также гибридную по своей сути технологию GPGPU (англ. General-purpose GPU, графические процессоры общего назначения).
Если говорить об оценке перспектив гибридных вычислений, нельзя не вспомнить часто цитируемое высказывание профессора университета Теннеси Jack J. Dongarra: «Графические процессоры уже достигли той стадии развития, когда многие практические задачи могут с лёгкостью решаться с их помощью, причём быстрее, чем на многоядерных системах.

Будущие вычислительные архитектуры будут преимущественно гибридными системами, состоящими из параллельных графических ядер, работающих в тандеме с многоядерными процессорами».

Современные модели доступа к памяти, ориентированные на мультипроцессорные архитектуры

Вопрос поддержки гибридных технологий в различных программных системах достаточно тесно связан с рассмотрением механизмов управления ресурсами памяти. В настоящее время известны следующие основные модели доступа к памяти.

Однородный доступ к памяти (англ. Uniform Me-mory Access, UMA). Данный подход подразумевает единообразную и одновременную доступность ресурсов памяти для всех процессорных модулей системы. При этом подразумевается гомогенная природа всего многообразия центральных вычислителей. Основной отличительной особенностью UMA является независимость времени доступа к ресурсу от того, какой конкретно модуль его запрашивает. Указанная модель доступа настолько прочно ассоциируется с симметричным мультипроцессированием (англ. Symmetric Multipro­cessing, SMP), что в большинстве случаев говорят об SMP/UMA-системах.

Модель неоднородного доступа к памяти (англ. Non-Uniform Memory Access, NUMA). Здесь определяющим фактором является геометрия системы, которая характеризует различное время доступа к ресурсам памяти для разных вычислителей. Можно легко продемонстрировать данный подход на примере современной гетерогенной системы (рис. 1).


Модель неоднородного доступа к памяти с контролем когерентности кэш-памяти (англ. Cache coherent NUMA, ccNUMA). В отличие от классического подхода данная модель подразумевает дополнительное аппаратное обеспечение, гарантирующее целостность данных (когерентность кэш-памяти).

Гетерогенно-однородный доступ к памяти (hUMA) [3]. Концепция подразумевает адаптацию модели UMA для применения в гибридных системах. Скорость доступа к памяти для различных вычислителей обеспечивается их совмещением на одном кристалле. Необходимо отдельно отметить, что на данный момент рассматриваемая модель реализована лишь в гибридных графических процессорах. Например, GPU произ­водства AMD реализуют технологию за счёт архитектуры HSA (от англ. Hetero­geneous System Archi­tecture). Традиционные способы реализации вычислений средствами графических процессоров подразумевают исполнение специального программного обеспечения, именуемого подпрограммами-шейдерами, а также подготовку и копирование исходных данных посредством ЦП. Гетерогенно-однородный доступ к памяти позволяет передавать гибридному контроллеру данные по физическому адресу, избегая избыточного копирования и привлечения для этих целей дополнительного аппаратного обеспечения.

Безусловно, такой фундаментальный аспект, как возможность поддержки гибридных технологий и различных моделей доступа к памяти, важен и для систем реального времени (СРВ). Остановимся на этих системах подробнее.

Гибридные технологии и механизмы доступа к памяти в контексте ОС РВ QNX Neutrino и ЗОСРВ «Нейтрино» КПДА.10964-01

С момента начала официальной поддержки мультипроцессорных архитектур в ядро ОС РВ QNX Neutrino была заложена и поддержка однородного доступа к памяти. Реализация модели UMA получила развитие как для SMP-систем, так и для ASMP (асимметричное мультипроцессирование). Данный механизм был унаследован от предшественника и в защищённой версии ОС РВ (ЗОСРВ «Нейтрино» КПДА.10964-01), которая в настоящий момент широко применя­ется в отечественной промышленности.

Для модели неоднородного доступа ситуация не столь однозначная. С одной стороны, для функционирования ОС РВ в системе, поддержива­ющей лишь модель NU­MA, принципиальных ограничений нет. Модуль управления памятью – в терминологии QNX Neu­tri­no это часть микроядра ОС РВ, именуемая менеджером памяти, – даже при реализации классической модели UMA будет успешно обслуживать запросы программного обеспечения в подобных системах, но осуществляться это будет заведомо неэффективно. С другой стороны, на прошедшем 17 апреля 2014 г. семинаре «Технологии QNX в России» было анонсировано проведение ООО «СВД Встраиваемые Системы» работ по поддержке отечественных процессоров с архитектурой Эльбрус (производства ЗАО «МЦСТ») в ЗОСРВ «Нейтрино» КПДА. 10964-01. На семинаре были представлены имеющиеся на данном этапе результаты начальной стадии поддержки аппаратного обеспечения, а также заявлены планы по поддержке модели NUMA [4] в рамках задачи оптимального управления памятью.

По своей сути QNX Neutrino обладает в определённом смысле безотносительностью к подавляющему большинству поддерживаемых технологий. Достигается данный эффект за счёт микроядерной архитектуры, позволяющей выносить на прикладной уровень всё функциональное многообразие, в явном виде не требующееся для эффективного функционирования ядра ОС РВ. В терминологии рассматриваемой системы объекты, которые предоставляют программный интерфейс к той или иной функциональности, именуются менеджерами ресурсов (англ. Resource Mana­ger, resmgr) и выполняются в пространстве пользовательских задач.

Можно привести наглядный пример упомянутой особенности данной ОС РВ. На рис. 1 была представлена широко применяемая реализация модели NUMA в гетерогенной вычислительной системе. Поскольку графическая подсистема не является критической в плане функционирования ядра, данный функционал вынесен за рамки микроядра и реализован в виде менеджера графической подсистемы. При этом, невзирая на тот факт, что микроядро управляет памятью согласно модели UMA, графическая подсистема может не менее эффективно адресоваться к ресурсам, время доступа к которым кардинально отличается от ОЗУ (рис. 2).


Редким исключением из принципа безотносительности ядра ОС РВ является, например, заявленная поддержка модели NUMA на уровне менеджера памяти. Очевидно, что в данном случае модификации базовых модулей системы избежать достаточно сложно.

В общем случае поддержка гибридных технологий внесения подобных изменений не требует. Например, для различных гибридных систем на кристалле успешно разрабатываются и внедряются менеджеры ресурсов, обеспечивающие поддержку желаемого аппаратного обеспечения в рамках обозначенной методики. Рассмотрим особенности проектирования менеджера ресурсов на примере гибридного математического сопроцессора системы на кристалле и наглядно убедимся в справедливости заявленной особенности ОС РВ QNX Neutrino.

Проектирование управляемого менеджера ресурсов в рамках концепции безотносительности микроядра

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

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

Схематично можно обозначить конфигурацию данного класса систем (рис. 3) следующим образом (в рамках данной статьи для краткости будем именовать гибридный математический сопроцессор ГСП). 


Математический сопроцессор в данных системах зачастую проектируется в соответствии с Гарвардской архитектурой, что обуславливает разделение в памяти массива данных и инструкций подпрограмм.

Возникает резонный вопрос: как обес­печивается структурирование программного обеспечения ГСП? Поскольку ресурс памяти у сопроцессора крайне ограничен, задача декомпозиции целиком ложится на плечи программиста.

Подразумевается, что структурированное ПО сопроцессора должно быть разбито на небольшие подпрограммы, которые связаны между собой на уровне аргументов и возвращаемого результата. В случае математического сопроцессора подпрограммой является функция, составленная в соответствии с регламентированным машинным языком, имеющим однозначное представление, соответствующее спецификации. Управляющий программный модуль должен обеспечивать возможность последовательного вызова подпрограмм ГСП, тем самым объединяя разрозненные исполняемые единицы в единое математическое обеспечение в соответствии с классическими представлениями структурного программирования.

Поддержка в ОС РВ QNX Neutrino международного стандарта POSIX и принцип безотносительности микроядра позволяют разработать менеджер ресурсов для гибридного сопроцессора, который предоставлял бы прикладным приложениям следующий функционал.

  1. Возможность обращаться к ГСП посредством стандартного POSIX-совместимого API: открытие потока данных и команд – вызов open(); чтение и запись данных для обработки – вызовы read()/write() и передача инструкций подпрограмм – вызов devctl().
  2. Механизм загрузки подпрограмм в память ГСП.
  3. Обеспечение передачи сопроцессору массивов данных без выгрузки подпрограммы.
  4. Запуск подпрограммы на исполнение в автономном режиме и ожидание её завершения без привлечения вычислительных ресурсов центрального вычислителя.
  5. Получение результатов работы сопроцессора и уведомление прикладного приложения о поступлении данных для считывания.

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

Z=f(X,Y),

где X – последовательность инструкций подпрограммы, Y – поток входных данных для обработки и Z – массив выходных данных, доступный прикладному ПО и являющийся вероятной основой для дальнейших вычислений. Необходимо отдельно отметить, что оператор f характеризуется исключительно функциональными возможностями ГСП.

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

С учётом всего перечисленного набора требований к функциональности менеджера ресурсов структуру математического обеспечения гибридной системы на кристалле можно представить в следующем виде (рис. 5).


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

Рассмотренные идеи являются концептуальной основой функционирования ОС РВ QNX Neutrino и ЗОСРВ «Нейтрино» КПДА.10964-01, что можно смело назвать одной из причин существенного числа внедрений этих систем в отечественной промышленности и неослабевающего интереса со стороны профессионального сообщества. Необ­ходимо также отметить, что технология управления аппаратным обеспечением посредством непривилегированных программных модулей (внешних по отношению к микроядру ОС РВ) не исчерпывается математическими сопроцессорами, что, в свою очередь, подтверждается, например, в рамках активно развивающегося проекта по поддержке 3D-графики в QNX Neutrino, известного как QNX Mesa 3D [5].

Таким образом, становится очевидным, что технология менеджеров ресурсов действительно позволяет ядру ОС РВ оставаться безотносительным к функциональному наполнению разрабатываемой системы. В то же время она позволяет прикладному ПО оставаться независимым от конструктивных особенностей и механизмов управления конкретным аппаратным обеспечением, оперируя при этом исключительно исходными алгоритмически обусловленными категориями. ●

Литература

  1. Гибридная операционная на базе технологий Philips [Электронный ресурс] // Официальный сайт компании Philips. – Режим доступа:  http://www.healthcare.philips.com/ru_ru/products/interventional_xray/product/systems/hybrid_operatin....
  2. Азизов Э.А., Алексеев П.Н., Кутеев Б.В. Коррекция дорожной карты Российской термоядерной стратегии // XLI Международная (Звенигородская) конференция по физике плазмы и УТС. – Звенигород, 10–14 февраля 2014 г.
  3. Hanjin Chu. AMD heterogeneous Uniform Memory Access // APU 13th developer summit. – San Jose, 11–13 November, 2013.
  4. Гилязов С.С., Кравцунов Е.М., Пантелеев П.В. Оптимизация ядра ОС LINUX для архитектуры «Эльбрус» с поддержкой NUMA [Электронный ресурс] // Официальный сайт ЗАО МЦСТ. – Режим доступа: http://mcst.ru/doc/110329/giljazov.doc.
  5. Докучаев А.Н. Разработка графического интерфейса бортового устройства с применением 3D-технологий // Семинар «Тех­нологии QNX в России». – Москва, 17 апреля 2014 г.



ПОДПИСАТЬСЯ НА НОВОСТИ

Будьте всегда в курсе самых свежих новостей
и узнавайте первыми о содержании нового номера

Подписка на новости

РЕКОМЕНДУЕМ